如何知道一个进程是否已经启动但是在Linux中崩溃了

Sab*_*bya 0 c c++ linux debugging monitoring

请考虑以下情况: - 我正在使用Linux.我怀疑我的应用程序崩溃了.我没有启用核心转储.日志中没有信息.

我怎么能确定,在系统重新启动后我的应用程序启动了,但现在它没有运行,因为它已经崩溃了.

我的应用程序配置为服务,用C/C++编写.

在某种程度上:如何获得自系统启动以来执行的所有进程/服务名称?它甚至可能吗?

我知道,我可以启用日志记录并再次启动进程以获取崩溃.

小智 6

此功能包含在Linux内核中.它被称为:BSD流程会计.


Jim*_*imB 5

标准做法是为您的守护程序(/var/run/$NAME.pid)提供一个pid文件,您可以在其中找到其进程ID,而无需手动解析进程树.然后,您可以检查该进程的状态,或让您的守护进程响应信号(通常为SIGHUP),并报告其状态.确保此pid仍属于您的进程是一个好主意,最简单的方法是检查/ proc/$ PID/cmdline.

附录:如果你只使用较新的fedora或ubuntu,你的init系统是新贵,它具有内置的监控和触发功能.

正如@ emg-2所指出的那样,BSD进程会计是可用的,但我不认为这是这种情况的正确方法.