start-stop-daemon
是OpenRC计划的一部分,这个程序最先出现在Debian系的Linux发行版中,这里有个比较古老的手册页面,更详细更直观的办法当然是通过man start-stop-daemon
来查看手册了。
start-stop-daemon
最基本的两个功能就是--start
和--stop
,简写为-S
和-K
,然后再加上一个-s|--signal
来给进程发送信号,功德圆满。
-x, --exec daemon
,daemon就是真正要执行的进程脚本,比方说启动nginx,那么就是start-stop-daemon -x nginx
-p, --pidfile pidfile
,指定pid文件,至于pid文件的用途就多了,stop,status都少不了它。-n, --name
,如果没有指定pid文件,那么就要通过指定name来停止进程了。-u, --user user[:group]
,指定脚本用哪个用户或用户组执行,init脚本是必须使用root
权限来执行的,但是它fork出来的子进程我们一般会选择一个权限较低的用户。-b, --background
,强制脚本在后台执行。-m, --make-pidfile
,这个一般和-b
配合,用于生成pid文件-d, --chdir path
,切换进程的主目录,这个在构建守护进程的时候是很常用的。-r, --chroot path
,在某些安全性要求较高的情况下,我们就需要用到chroot
将进程工作环境与物理环境完全隔离开来。-1, --stdout logfile
,将标准输出记录到log文件,与之相对应的就是-2, --stderr
标准错误流。-w, --wait milliseconds
,进程启动后,有这个参数会等待几毫秒来检测进程是否仍然存活。
-x daemon
后面跟的执行脚本必须只能是一个文件名,有些程序运行时还需要指定一些参数,比如nginx -c file
来指定nginx的配置文件,使用start-stop-daemon -x "nginx -c file"
是会报错的,这些程序内的参数以另一种方式加载,start-stop-daemon -x daemon -- $ARGV
,这里的双横线--
后面跟的所有参数就会被带到程序中了,比如start-stop-daemon -x nginx -c /etc/nginx.conf