我有以下脚本:
#!/usr/bin/python3
import sys
for s in sys.argv:
print(s)
现在我执行:
sudo start-stop-daemon --start --pidfile /var/run/test.pid --make-pidfile /var/run/test.pid --user max --exec /home/max/Dokumente/test.py
输出为:
/home/max/Dokumente/test.py
/var/run/test.pid
我的问题是:为什么它使用 pidfile 作为我的脚本的参数,有没有办法可以阻止这种情况?
我正在运行 Ubuntu 13.04 64 位。
答案1
我应该更仔细地阅读手册页。它--make-pidfile
不带参数,它是一个标志:
-m, --make-pidfile
Used when starting a program that does not create its own pid file. This option will make
start-stop-daemon create the file referenced with --pidfile and place the pid into it just before
executing the process. Note, the file will not be removed when stopping the program. NOTE: This
feature may not work in all cases. Most notably when the program being executed forks from its
main process. Because of this, it is usually only useful when combined with the --background
option.
因此,如果命令运行如下
$ sudo start-stop-daemon --start --pidfile /var/run/test.pid \
--make-pidfile /var/run/test.pid --user max --exec /bin/echo
第二次提到的/var/run/test.pid
未被任何选项捕获,因此作为参数传递给 调用的可执行文件--exec
。这就是为什么当你让脚本打印其参数时它会被打印出来。解决方案就是不给 任何参数--make-pidfile
:
$ sudo start-stop-daemon --start --pidfile /var/run/test.pid \
--make-pidfile --user max --exec /bin/echo
感谢楼主自己解决了但已经接受了我的回答。