在樹莓派上後台運行Python程式有幾種方法,取決於你的特定需求和情況。以下是一些常見的方法:
使用nohup指令:使用nohup指令可以使程式在背景運行,並且不受終端關閉的影響。範例:
巴什nohup python your_script.py &
使用screen或tmux:這兩個工具都允許你創建一個會話,在其中運行你的Python程序,並且在終端關閉後仍然可以保持運行。首先安裝screen或tmux(如果你尚未安裝),然後啟動一個新的會話並執行你的程式。
- 對於screen:
screen -S session_name python your_script.py - 對於tmux:阿爾杜伊諾
tmux new-session -s session_name python your_script.py
要在背景運行,你可以按下
Ctrl + b然後按下d,這樣會分離當前的會話。- 對於screen:
使用systemd服務:你可以建立一個systemd服務單元,以確保你的Python程式在系統啟動時自動運行,並且可以在背景持續運行。首先,建立一個服務單元檔案(.service),然後設定它來執行你的Python腳本。範例:
- 建立一個服務單元檔案:巴什
sudo nano /etc/systemd/system/your_service_name.service - 編輯服務單元文件,內容類似:產生檔案
[Unit] Description=Your Python Service After=network.target [Service] ExecStart=/usr/bin/python /path/to/your_script.py Restart=always [Install] WantedBy=multi-user.target - 啟用並啟動服務:巴什
sudo systemctl daemon-reload sudo systemctl enable your_service_name sudo systemctl start your_service_name
- 建立一個服務單元檔案:
無論你選擇哪種方法,都要確保你的Python程式不會因為權限問題或其他原因而無法運行,並且你可以從日誌中了解程式的狀態和輸出。
要停止由nohup啟動的進程,你可以使用ps指令找到進程的PID(進程ID),然後使用kill指令傳送訊號給進程來終止它。以下是具體步驟:
使用
ps指令找到你的Python程式的PID:珀爾ps aux | grep your_script.py這將顯示所有與
your_script.py相關的進程。找到你想要終止的進程的PID。使用
kill指令發送SIGTERM訊號(終止訊號)給進程:巴什kill PID其中PID是你在第一步找到的進程的PID。
如果你的程式沒有回應SIGTERM訊號,你可以嘗試發送SIGKILL訊號(強制終止訊號):
巴什kill -9 PID
但是要注意,這將立即終止進程,並且不會執行清理或保存操作,可能導致資料遺失或其他問題。通常情況下,首選使用SIGTERM訊號,因為它允許進程進行清理操作。
將your_script.py安裝為一個服務。在Linux系統中,通常會被使用systemd來管理系統服務。以下是將Python腳本安裝為systemd服務的一般步驟:
建立一個服務單元檔案(
.service):巴什sudo nano /etc/systemd/system/your_service_name.service編輯服務單元文件,填入以下內容:
產生檔案[Unit] Description=Your Python Service After=network.target [Service] ExecStart=/usr/bin/python /path/to/your_script.py WorkingDirectory=/path/to/directory_of_your_script Restart=always User=your_username [Install] WantedBy=multi-user.targetDescription: 服務的描述。After: 指定服務應在哪些其他服務之後啟動。ExecStart: 指定要執行的指令,這裡是你的Python腳本路徑。WorkingDirectory: 指定工作目錄,即Python腳本所在的目錄。Restart: 指定服務在退出時是否應該重新啟動。User: 指定服務運行的使用者。為了避免權限問題,建議使用非特權使用者執行服務。
儲存並關閉文件。
重新載入
systemd配置:sudo systemctl daemon-reload啟用並啟動你的服務:
巴什sudo systemctl enable your_service_name sudo systemctl start your_service_name
現在,你的Python腳本應該作為一個服務在後台運行了。你可以使用以下指令來停止、重新啟動或查看服務的狀態:
- 停止服務:
sudo systemctl stop your_service_name - 重啟服務:
sudo systemctl restart your_service_name - 查看服務狀態:
sudo systemctl status your_service_name
記得替換指令中的your_service_name為你實際使用的服務名稱。
沒有留言:
張貼留言