我想知道检查进程运行状况的方法有哪些。考虑到系统上有 10000 个进程正在运行,并且您必须确保万一这些进程中的任何一个出现故障,我们需要使进程 UP。
4 回答
使用进程 ID (PID) 并定期轮询进程是否还活着或已死;如果它死了,那就复活它。
但是,如果您有 10000 个进程,您可能会首先达到操作系统的进程限制。我建议重新设计你的程序,这样你一开始就不需要那么多流程。
通常通过让特定的启动程序执行()程序并等待 SIGCHILD 指示子进程结束来处理重新生成的进程。
对于启动时应用程序(服务器等),像upstart这样的守护进程可以自动为您执行此操作。
虽然其他人指出应用程序已经存在(除非您有明确的理由不这样做,否则您真的应该使用它)我会抛出一个自定义解决方案的随机想法。
如果您控制所有N
进程,则使它们都具有一个大的共享内存区域N
位(因此,10000 个进程〜 1KB,还不错)。启动每个进程时,给它一个数字,i
范围从 0 到 N。T
每个进程每秒都会将共享内存中的位设置i
为 1。监控进程可以检查所有N
位每秒是否为 1 k*T
,然后将它们全部重置为 0过程。
这仍然是 O(n),您无法避免,但这些原语都非常快,并且应该可以很好地扩展到操作系统线程限制。
获取的另一种想法i
是仅使用 PID,但共享内存必须更大(但可能仍然可以;例如,Linux PID 范围很小)。
有一个名为monit的实用程序可以满足您的需求。但它对于 Linux 中的某些重要进程..所有 10000 个进程都很重要!!!