我正在使用 Ubuntu 的 upstart 功能运行我的 Python 脚本,这样如果我的 Python 脚本由于某种原因死掉或被杀死,它可以自动重新启动并且一切正常 -
所以我决定利用UPSTART
Ubuntu的功能来自动重启Python脚本。
在创建testing.conf
这样的文件后/etc/init/testing.conf
-
start on runlevel [2345]
stop on runlevel [016]
chdir /tekooz
respawn
post-stop script
sleep 30
end script
exec python testing.py
我运行下面的 sudo 命令来启动它,我可以看到该进程正在使用,ps ax
并且我的 python 脚本也运行良好。当我检查上述进程的 pid 时,我总是看到它以 root 身份运行。我不想以 root 身份运行它。相反,我想将其作为deds
帐户运行
deds@bx13:/$ sudo start testing
testing start/running, process 3635
deds@bx13:/$ ps aux | grep testing
root 3635 2.4 0.1 364136 15660 ? Ssl 12:24 0:00 python testing.py
是否有其他地方需要放置该testing.conf
文件,然后使用其他命令运行它?
我不想通过sudo
as来启动我的 python 脚本sudo start testing
,而且我也不想以 root 身份启动,我只想以deds
帐户身份启动。还有其他方法可以做到这一点吗?
答案1
你有两个选择。如果您的 upstart 版本(使用该initctl --version
命令)至少为 1.4,则将以下行添加到您的testing.conf 文件中:
setuid deds
setgid deds
否则,将您的exec
行更改为:
exec sudo -u deds python testing.py