以特定用户身份在启动时运行 Python 脚本

以特定用户身份在启动时运行 Python 脚本

我想以特定用户的身份在启动时运行 python 脚本。

该脚本是一个服务器(监听套接字、提供请求等),应该在后台运行,任何输出最好通过管道传输到日志文件。

我当前的方法是在 rc.local 的末尾添加一个条目,如下所示:

su -l usr -c 'script.py arg1 arg2 &> logfile.log &'

问题:在脚本中我有几个打印语句。它们从未出现在日志文件中。我试过

su -l usr -c 'script.py arg1 arg2 &> logfile.log &'

su -l usr -c 'script.py arg arg &> logfile.log &' &> secondLogfile.log &

su -l usr -c 'script.py arg arg &> logfile.log &'

su usr -c 'script.py arg arg &> logfile.log &'

我感觉我遗漏了一些基本的东西。也许我完全用错了方法。

系统是 Fedora 15,脚本是 Python3,可以以用户身份从命令行正常运行。用户对我希望输出重定向到的文件夹具有写权限。(我通过将文件夹设为 777 来排除它)。

我尝试将 python 脚本作为 Systemd 服务运行,但是在脚本无法获取要监听的套接字时遇到了问题。(如果我在启动时启用 systemd 服务,则会抛出有关正在使用套接字的操作系统错误,而如果我在启动后运行 systemctl start script.service,一切就正常了)。

我怎样才能在启动时以用户身份启动抓取套接字的 Python 脚本?

答案1

这对我有用:

su -l usr -c "p​​ython 脚本.py arg1 arg2 > logfile.txt &"

我相信之前的 & 过早地将“python script.py”推到了后台。

答案2

@Reboot 行在 crontab 中运行良好。Freetx 的答案对我不起作用(我尝试了与之完全相同的方法,但没有成功 :-(

相关内容