1

我有一个简单的 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 已安装并且所有链接都已设置。

谢谢您的帮助

4

1 回答 1

1

该错误消息意味着start-stop-daemon正在寻找要打开的文件(该stat操作是在打开文件之前进行检查)并将您的'python ... '参数视为文件。

请参阅此示例,该示例证实了这一点。您可能需要阅读您的 Ubuntu 版本的 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'
于 2016-12-15T18:42:58.660 回答