myalert.pyPython的守護程序:檢查有一個守護進程運行在任何時候都
from daemon import Daemon
import os, time, sys
class alertDaemon(Daemon):
def run(self):
while True:
time.sleep(1)
if __name__ == "__main__":
alert_pid = '/tmp/ex.pid'
# if pid doesnt exists run
if os.path.isfile(alert_pid): # is this check enough?
sys.exit(0)
daemon = alertDaemon(alert_pid)
daemon.start()
鑑於沒有其他程序或用戶將創建pid文件:
1)是否有其中pid的情況下,還沒有存在的守護進程仍在運行?
2)有沒有pid確實存在但守護進程沒有運行的情況?
因爲如果對上述至少一個問題的答案是肯定的,那麼只要檢查pid文件的存在是不夠的,如果我的目標有一個守護進程始終運行。問:如果我必須檢查過程,那麼我希望避免像系統調用ps -ef和grep這樣的腳本名稱。有沒有這樣做的標準方式?
注:腳本,myalert.py,將是一個cronjob
可能試圖偵聽某個端口,然後如果第二個守護進程啓動,該端口將不可用。 – Hacketo 2014-09-30 14:25:16
你正在使用哪個'daemon'庫? – dano 2014-09-30 14:54:15
@ dano4來自http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/ – ealeon 2014-09-30 14:59:36