Bash

如果 Python 腳本被殺死或死亡,如何自動重新啟動它

  • February 12, 2022

我在我的 Ubuntu 機器(12.04)的後台執行我的 Python 腳本,就像這樣 -

nohup python testing.py > test.out &

現在,在某個階段,我的上面Python script可能會因任何原因而死。

因此,我正在考慮使用某種cron agentbash 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]在系統啟動時啟動命令。

引用自:https://unix.stackexchange.com/questions/107939