[英]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
使用超級用戶來管理您的腳本。 它為您提供重新啟動實用程序,日志記錄和遠程監視。 不難設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.