如何使用ubuntu的UPSTART功能重新启动python脚本但不以root身份启动?

如何使用ubuntu的UPSTART功能重新启动python脚本但不以root身份启动?

我正在使用 Ubuntu 的 upstart 功能运行我的 Python 脚本,这样如果我的 Python 脚本由于某种原因死掉或被杀死,它可以自动重新启动并且一切正常 -

所以我决定利用UPSTARTUbuntu的功能来自动重启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文件,然后使用其他命令运行它?

我不想通过sudoas来启动我的 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

相关内容