Закиньте кудись pidfile (наприклад, / tmp). Потім ви можете перевірити, чи працює процес, перевіривши, чи існує PID у файлі. Не забувайте видаляти файл при чистому вимкненні та перевіряйте його під час запуску.
#/usr/bin/env python
import os
import sys
pid = str(os.getpid())
pidfile = "/tmp/mydaemon.pid"
if os.path.isfile(pidfile):
print "%s already exists, exiting" % pidfile
sys.exit()
file(pidfile, 'w').write(pid)
try:
# Do some actual work here
finally:
os.unlink(pidfile)
Потім ви можете перевірити, чи працює процес, перевіривши, чи вміст /tmp/mydaemon.pid є існуючим процесом. Monit (згаданий вище) може зробити це за вас, або ви можете написати простий скрипт оболонки, щоб перевірити його для вас, використовуючи код повернення з ps.
ps up `cat /tmp/mydaemon.pid ` >/dev/null && echo "Running" || echo "Not running"
Щоб отримати додатковий кредит, ви можете використовувати модуль atexit, щоб переконатися, що ваша програма очищає свій pidfile за будь-яких обставин (коли вони вбиті, винятки викликані тощо).