2024年4月2日 星期二

在SSH連線關閉後!仍可繼續執行指令的方法

 

在樹莓派上後台運行Python程式有幾種方法,取決於你的特定需求和情況。以下是一些常見的方法:

  1. 使用nohup指令:使用nohup指令可以使程式在背景運行,並且不受終端關閉的影響。範例:

    巴什
    nohup python your_script.py &
  1. 使用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,這樣會分離當前的會話。

  2. 使用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指令傳送訊號給進程來終止它。以下是具體步驟:

  1. 使用ps指令找到你的Python程式的PID:

    珀爾
    ps aux | grep your_script.py

    這將顯示所有與your_script.py相關的進程。找到你想要終止的進程的PID。

  2. 使用kill指令發送SIGTERM訊號(終止訊號)給進程:

    巴什
    kill PID

    其中PID是你在第一步找到的進程的PID。

如果你的程式沒有回應SIGTERM訊號,你可以嘗試發送SIGKILL訊號(強制終止訊號):

巴什
kill -9 PID

但是要注意,這將立即終止進程,並且不會執行清理或保存操作,可能導致資料遺失或其他問題。通常情況下,首選使用SIGTERM訊號,因為它允許進程進行清理操作。

your_script.py安裝為一個服務。在Linux系統中,通常會被使用systemd來管理系統服務。以下是將Python腳本安裝為systemd服務的一般步驟:

  1. 建立一個服務單元檔案(.service):

    巴什
    sudo nano /etc/systemd/system/your_service_name.service
  2. 編輯服務單元文件,填入以下內容:

    產生檔案
    [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.target
    • Description: 服務的描述。
    • After: 指定服務應在哪些其他服務之後啟動。
    • ExecStart: 指定要執行的指令,這裡是你的Python腳本路徑。
    • WorkingDirectory: 指定工作目錄,即Python腳本所在的目錄。
    • Restart: 指定服務在退出時是否應該重新啟動。
    • User: 指定服務運行的使用者。為了避免權限問題,建議使用非特權使用者執行服務。
  3. 儲存並關閉文件。

  4. 重新載入systemd配置:

    sudo systemctl daemon-reload
  5. 啟用並啟動你的服務:

    巴什
    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為你實際使用的服務名稱。

沒有留言:

張貼留言

厭世上班族必備!「超Q麻糬醬P2-不想上班」貼圖,完美演繹你的心聲!

厭世上班族必備!「超Q麻糬醬P2-不想上班」貼圖,完美演繹你的心聲!🥺✨ 嘿,各位社畜們!是不是每天早上都想賴床,一想到上班就全身不舒服?😫 別擔心,你的心聲我們都聽到了!今天小編要來推薦一組超級有共鳴的 LINE 貼圖——「超Q麻糬醬P2-不想上班」!這組...

網誌清單