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