我正在运行一个 node.js 服务(statsd
) 在 CentOS 6 上。守护进程和启动此类服务的正确方法是什么?
潜在的守护进程——守护进程应该是特定于语言的还是通用的?:
- 永远(特定于节点)
- 守护进程
- 禁止(可能错误)
- 啟動-停止啟動程式(仅限 debian?这是用于守护进程还是启动/停止?Centos 的对应版本是什么?)
- 应用程序本身是否真的应该知道如何将自己守护进程化,然后设置一个
-d
标志?(例如通过node-daemonize2或者永远监视?)
服务启动器 - 这些应该来自系统/发行版,还是应该来自诸如 monit 之类的监控工具?:
不幸的是我对此还很陌生——在哪里可以找到最标准、最经典、最可靠的方法?
答案1
应用程序本身是否真的知道如何自我守护?...
如果您的应用程序要作为守护进程运行,是的,它应该完全了解如何将自己作为守护进程运行、写入适当的文件(首先想到的是日志和 PID)以及处理信号。如果不是这样,那真是太糟糕了。
如果您的应用程序并非真正要成为守护进程,或者这不是其主要目的,那么这完全由您决定。如果您想让其他人使用起来更方便,您可能会添加它。如果您想让自己的生活更轻松,您可能会将其省略。无论哪种方式,人们通常都不会有“WTF”的反应。
服务启动器...
每个发行版的软件包/ports 系统应该负责修改您的通用启动/停止脚本以满足他们的特定需求。这通常不是火箭科学,但如果有疑问,请联系您正在使用的发行版的维护人员。
监控工具..
应该知道如何与 Distro 的官方启动/停止机制进行交互,并且应该不知道如何具体与您的程序进行交互(除非您的程序通过报告机制“发布”数据,可能包括 SNMP 服务或类似服务的挂钩;所有这些实际上取决于您的程序的作用)。