Bash
如果 Python 腳本被殺死或死亡,如何自動重新啟動它
我在我的 Ubuntu 機器(12.04)的後台執行我的 Python 腳本,就像這樣 -
nohup python testing.py > test.out &
現在,在某個階段,我的上面
Python script
可能會因任何原因而死。因此,我正在考慮使用某種
cron agent
bash shell 腳本,如果它因某種原因被殺死,它可以自動重新啟動我上面的 Python 腳本。這可能嗎?如果是,那麼解決此類問題的最佳方法是什麼?
更新:
像這樣創建
testing.conf
文件後 -chdir /tekooz exec python testing.py respawn
我在 sudo 命令下執行以啟動它,但我看不到使用 ps ax 執行的程序?
root@bx13:/bezook# sudo start testing testing start/running, process 27794 root@bx13:/bezook# ps ax | grep testing.py 27806 pts/3 S+ 0:00 grep --color=auto testing.py
知道為什麼 px ax 沒有顯示任何東西嗎?以及如何檢查我的程序是否正在執行?
這是我的python腳本-
#!/usr/bin/python while True: print "Hello World" time.sleep(5)
在 Ubuntu 上(直到 14.04、16.04 和更高版本使用 systemd)可以使用 upstart 這樣做,比 cron 作業更好。您將配置設置放入
/etc/init
並確保指定respawn它可能是一個最小的文件
/etc/init/testing.conf
(編輯為root
):chdir /your/base/directory exec python testing.py respawn
您可以使用以下方法進行測試
/your/base/directory/testing.py
:from __future__ import print_function import time with open('/var/tmp/testing.log', 'a') as fp: print(time.time(), 'done', file=fp) time.sleep(3)
並開始:
sudo start testing
並遵循(在另一個視窗中)發生的情況:
tail -f /var/tmp/testing.log
並停止:
sudo stop testing
您還可以添加
[start on][2]
在系統啟動時啟動命令。