我正在尝试使用start-stop-daemon来启动在后台运行的进程。据我所知,start-stop-daemon应该阻止第二个进程启动(如果已经运行)。我现在运行的脚本非常简单:
#!/bin/sh
while true; do
date > /home/pi/test/test.txt
sleep 10
done
我正在使用start-stop-daemon --start -v -b -m --pidfile /var/run/test.pid --exec /home/pi/test/test.sh
我可以使用start-stop-daemon --stop -v --pidfile /var/run/test.pid
但是,如果我运行两次启动命令,它将启动两个进程,而不是只有一个我期望的进程。 start命令是否在启动进程之前检查pid文件,或者是否还需要做其他事情才能实现?
答案 0 :(得分:3)
man page of start-stop-daemon包含有关使用 - exec 选项和脚本的特殊警告。
-x , - exec 可执行文件
检查作为此可执行文件实例的进程。可执行文件 参数应该是绝对路径名。 注意: 这可能不起作用 打算用解释的脚本,因为可执行文件将指向 解释
运行脚本时,实际启动的进程是脚本的shebang行中注明的解释器。这会混淆 start-stop-daemon 实用程序。
顺便说一句,您可以使用 -t 选项通过 start-stop-daemon 调试此类问题。