Python 守护进程化
我想把一个Python程序变成后台进程,现在想问一下,像这样让一个后台进程运行,作为父进程去调用另一个类,打开10到30个线程,这样做是否合适。
我打算写一个监控脚本,用来监控一组服务器,想每5分钟检查一次每台服务器,确保每台服务器都能在5分钟内被检查到。
我希望输出的格式是这样的(类似于ps auxf的样式):
|monitor-daemon.py
\-check-server.py
\-check-server.py
....
谢谢!
3 个回答
-2
其实,创建你自己的 daemonize
函数并不复杂。关于《Unix环境高级编程》(第二版)的源代码是可以免费获取的,你可以在这个链接找到:http://www.apuebook.com/src.tar.gz,你需要找的是 apue.2e/daemons/init.c
这个文件。
还有一个 小工具程序,它可以帮你完成创建一个合适的守护进程的所有工作,你可以用它来包装任意程序,这样可能会省去一些麻烦。
8
也许你应该使用这个链接中的内容:http://pypi.python.org/pypi/python-daemon
1
你可以使用 supervisord 来实现这个功能。你可以设置任务,让它们对特定事件做出反应。这些事件可以是手动创建的,也可以是通过监控进程或按照固定时间间隔自动生成的。
这个工具完全可以自定义,而且是用Python写的。
举个例子:
[program:your_daemon_name]
command=your_daemon_process
# Add extra options here according to the manual...
[eventlistener:your_monitor_name]
command=your_monitor_process
events=PROCESS_STATE_RUNNING # Will be triggered after a program changes from starting to running
# Add extra options here according to the manual...
如果你想让事件监听器对进程的输出做出反应,可以使用事件 PROCESS_COMMUNICATION_STDOUT
,或者使用 TICK_60
来每分钟检查一次。日志可以重定向到文件中,这样你就可以随时查看状态。