upstart 启动 python 脚本,但它的行为异常

upstart starts python script but it behaves unexpectedly

程序在 cron 或 shell 启动时工作。但是当被upstart启动时,它似乎无限循环。

他们使用的脚本和文件都在/home/user/目录下,归user所有,都拥有777权限。

暴发户.conf文件:

start on runlevel [2345]
stop on runlevel [!2345]

kill signal SIGHUP
# reload signal SIGHUP
respawn

exec python /home/user/Documents/init.py -b 600

upstart 默认以 root 身份执行命令。但是可以指定用户:https://askubuntu.com/questions/87671/how-do-i-start-jobs-as-a-non-privileged-user-in-upstart.

但是脚本是使用 user 特定变量和对特定目录的依赖性编写的。

init.py 有这一行:

self.d_root = os.path.join(os.path.expanduser('~'),'Documents','records')

我把它改成了这个,它起作用了:

self.d_root = os.path.dirname(os.path.realpath(__file__))

但我认为正确的解决方法是将此行添加到 .conf 文件中:

setuid username