/dev/null在类Unix系统中是一个特殊的设备文件,它丢弃一切写入其中的数据,读取它则会立即得到一个EOF。 在程序员行话,尤其是Unix行话中,/dev/null被称为比特桶或者黑洞
EOF:文件结尾,是操作系统无法从数据源读取更多数据的情形。资料源通常为文件或流。 在C标准库中,像getchar这样的数据读取函数返回一个与符号EOF相等的值来指明文件结束的情况发生,EOF的真实值与不同的平台有关,并且不等于任何有效的字符代码。
nohup: 忽略 SIGHUP 信号,避免因父 shell 退出而导致 COMMAND 启动的子进程被杀死。
优秀从模仿开始,欲知如何优雅的运行一个 daemon,我们应该分析 linux 的做法,linux 环境下通常用 service 启动各种 daemon
Service 最终调用 /etc/inti.d/ 目录下的脚本启动相应的服务,这些脚本就是我们的学习样本,以 nginx 为例,精简版的脚本如下
. /lib/lsb/init-functions
case "$1" in
start)
start-stop-daemon --start --quiet --pidfile /run/nignx.pid --exec /usr/sbin/nginx 2>/dev/null
;;
stop)
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile /run/nignx.pid --name nginx
;;
esac
exit 0