Linux:已知启停时间,如何查询已结束进程的PID、TID及名称
能否获取已结束进程的PID、TID和名称?
首先明确:默认情况下,X+6秒时直接用ps这类工具是拿不到目标进程信息的,因为ps只显示当前活跃的进程,目标进程已经在X+5秒终止,不会出现在ps的输出里。
但有没有其他办法?得看系统是否预先配置了进程审计或监控机制:
Linux 系统
- 若启用了
auditd服务并配置了进程启动/终止的审计规则(比如监控execve系统调用),可以通过ausearch命令查询审计日志,从中提取进程的PID、名称,甚至线程(TID)的相关记录——不过线程的审计需要额外配置更细的规则。 - 若启用了进程记账(process accounting,通过
acct包开启),可以用lastcomm命令查看历史进程记录,能获取到进程的PID、启动/结束时间、命令名称,但通常不会记录TID信息,因为记账机制主要针对进程级。 - 如果之前有自定义的监控脚本(比如定时执行
ps aux并输出到日志文件),可以从留存的日志里检索目标时间窗口内的进程信息,但这属于事前准备的方案,没提前做就用不了。
- 若启用了
Windows 系统
- 若开启了“进程创建”和“进程终止”的审核策略(在本地安全策略中配置),可以在事件查看器的“安全日志”里找到对应事件(事件ID 4688对应进程创建,4689对应终止),事件详情里会包含进程PID、名称,部分情况下也能找到线程ID的相关数据。
如果既没开启审计机制,也没提前做监控记录,那没有办法获取到和ps输出一致的进程信息——因为系统默认不会主动留存已终止进程的详细运行数据。
内容的提问来源于stack exchange,提问作者Gregor
相关产品推荐
相关产品推荐

