Python 守护进程化

6 投票
3 回答
7905 浏览
提问于 2025-04-16 02:09

我想把一个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 来每分钟检查一次。日志可以重定向到文件中,这样你就可以随时查看状态。

撰写回答