我有一个简单的python脚本,我想在docker容器中的后台启动一个守护进程服务
/sbin/start-stop-daemon --start --user root --make-pidfile --pidfile /var/lock/subsys/my-application.pid --exec 'python /opt/app/uc/monitor/bin/my-application.py'
当我在shell中执行此命令时,我得到了
/sbin/start-stop-daemon: unable to stat //python /opt/app/uc/monitor/bin/my-application.py (No such file or directory)
然而,当在shell中执行下面的命令时,它可以工作
python /opt/app/uc/monitor/bin/my-application.py
我确定安装了python并且已经设置了所有链接。
感谢您的帮助
答案 0 :(得分:1)
该错误消息意味着start-stop-daemon
正在寻找要打开的文件(stat
操作在打开文件之前是一个检查)并将'python ... '
参数视为好像是一份文件。
见this example确认了这一点。您可能需要阅读Ubuntu版本的man page for start-stop-daemon,以检查设置的有效命令。
最简单的解决方案可能是创建一个shell脚本(比如/opt/app/uc/monitor/bin/run-my-application.sh
),然后将其放入其中:
#!/bin/bash
python /opt/app/uc/monitor/bin/my-application.py
请务必对此文件执行chmod +x
。如果找不到python,请使用which python
查找python
的路径并在脚本中使用它。
现在尝试:
/sbin/start-stop-daemon --start --user root --make-pidfile --pidfile /var/lock/subsys/my-application.pid --exec '/opt/app/uc/monitor/bin/run-my-application.sh'