什么是适当的什么来终止一个脚本使用start-stop-daemon?

我正在使用start-stop-daemon为我的脚本创build一个INIT脚本。 我正在使用–make-pidfile导致我的脚本不做自己的PID。 我可以启动我的脚本使用开始和PID文件生成适当的PID。 但停止function不起作用。 按照start-stop-daemon手册,

– 停止检查是否存在指定的进程。 如果存在这样的进程,start-stop-daemon会发送由–signal指定的信号,然后退出,错误状态为0.如果这个进程不存在,则start-stop-daemon退出,错误状态为1(如果 – -oknodo被指定)。 如果指定了–retry,则start-stop-daemon将检查进程是否已经终止。

我没有find任何文件 – 信号本身。 就像如何指定–signal如果我想发送一个SIGTERM。

case "$1" in start|debug) log_daemon_msg "Starting $DESC: $NAME" start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE \ --exec $DAEMON || log_failure_msg " already running" log_end_msg 0 ;; stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ --exec $DAEMON log_end_msg 0 ;; 

使用--signal您可以使用数字值,或没有SIG部分的信号名称,例如 – --signal TERM

停止时不要使用--exec $DAEMON ,因为如果在升级过程中将可执行文件replace为可执行文件时,如果您试图停止守护程序,则不起作用:可执行文件与正在运行的进程不匹配不会停止。 或者,如果您坚持使用--exec确保在更换可执行文件之前停止守护进程。

如果创build的pid文件与守护进程的进程不匹配,那么守护进程本身也可能分支到后台。 如果是这样的话,看看守护进程是否有一个选项来防止这种背景,因为start-stop-daemon已经处理了这个。 如果这是不可能的,不要使用pidfile选项,并依赖--exec (但请参阅上一段有关升级的内容)。