Linux
以特定使用者身份在啟動時執行 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 腳本來獲取套接字?
@Reboot 行就像 crontab 中的魅力一樣。Freetx 的答案對我不起作用(我嘗試了完全類似的東西,但沒有骰子 :-(
這對我有用:
su -l usr -c “python script.py arg1 arg2 > logfile.txt &”
我相信前面的 & 正在將“python script.py”過早地推到後台。