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
程序在 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