以特定使用者身分在啟動時執行 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 script.py arg1 arg2 > logfile.txt &"

我相信前面的 & 過早地將“python script.py”推入後台。

答案2

@Reboot 行在 crontab 中就像一個魅力。 Freetx 的答案對我來說不起作用(我嘗試了完全類似的東西,但沒有骰子:-(

相關內容