我想以特定用户的身份在启动时运行 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 "python 脚本.py arg1 arg2 > logfile.txt &"
我相信之前的 & 过早地将“python script.py”推到了后台。
答案2
@Reboot 行在 crontab 中运行良好。Freetx 的答案对我不起作用(我尝试了与之完全相同的方法,但没有成功 :-(