簡體   English   中英

無論它們存在或崩潰的原因,如何重啟python scrypt?

[英]How to restart the python scrypts regardless of the reasons they've existed or crashed?

說我有這個sh腳本來監視我的python腳本,並在崩潰時重新啟動它:

until myserver; do
    echo "Server 'myserver' crashed with exit code $?.  Respawning.." >&2
    sleep 1
done

雖然它可能會為這是應該做一些工作並退出 Python腳本工作的很好,它不會對我的情況,因為我需要我的Python腳本S(少數的,而不是只有一個)在后台總是全天候工作 而且,如果其中之一曾經存在,則意味着它已崩潰,應重新啟動。

我應該如何處理我的案件?

這可以使用crontab完成。
運行crontab -e ,它將打開一個文本編輯器。
為每個腳本在該文件中添加新行,

*/5 * * * * pgrep -f yourPythonScript1.py || nohup python /fullpathtoyourfile/yourPythonScript1.py

保存該文件並退出編輯器。

這將創建一個新的crontab,該crontab每5分鍾運行一次,並啟動每個腳本,除非該腳本已在運行。 (可以根據需要隨意編輯頻率)

顯示的命令運行pgrep (基本上是查找以給定的字符串名稱運行的進程)

-f搜索用於運行進程的整個命令-您將要執行此操作,因為您正在運行多個python腳本)

|| 表示如果上一條命令失敗,請執行以下操作。 因此,當您的特定腳本未運行時,pgrep將失敗,並將重新啟動。

如果您在系統上具有root用戶。

如果您有systemd發行版。

然后...

您可以使用systemd使用“ Restart = always”在進程結束后立即重新啟動。 例如:

[Unit]
Description=My cool service
After=network.target

[Service]
ExecStart=/usr/local/sbin/myservice
User=<myuser>
Group=<mygroup>
Restart=always

[Install]
WantedBy=multi-user.target

使用超級用戶來管理您的腳本。 它為您提供重新啟動實用程序,日志記錄和遠程監視。 不難設置。

http://supervisord.org/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM