在linux运维与开发工作中,我们经常需要回溯异常进程的执行记录,排查资源占用异常、恶意进程或服务运行故障,掌握查看进程执行历史的方法能大幅提升问题排查效率,以下是几种常用的实操方法。
利用账户命令历史快速定位
如果要找用户手动执行的命令类进程,最便捷的方式就是查看shell命令历史。直接执行`history`就能列出当前用户所有执行过的命令,结合grep可以快速过滤目标进程,比如查询所有和nginx相关的执行命令,输入`history | grep nginx`即可。如果要查看其他用户的命令历史,只需要读取对应用户主目录下的`.bash_history`文件,比如查看root用户的历史命令就是`cat /root/.bash_history`。不过这种方法只能记录用户手动输入的命令,无法记录后台自动运行、系统调度的进程,存在一定局限性。

通过lastcomm查看全量进程记账记录
要获取系统全量进程的执行历史,需要开启进程记账功能,主流linux发行版可以通过安装`psacct`包实现,安装完成后启动服务即可自动记录所有进程的启动信息。之后使用`lastcomm`命令就能输出所有进程的执行历史,包含执行用户、结束时间、占用资源、关联终端等信息,比如查询所有用户执行过的vim进程,可以直接输入`lastcomm vim`,还可结合grep过滤指定信息,适合深度排查未知进程问题。

通过journalctl查看systemd进程历史
当前绝大多数现代linux发行版都使用systemd作为初始化进程,由systemd托管的服务进程,所有执行日志和启动记录都可以通过journalctl查询。比如查询nginx服务的完整执行历史,可以输入`journalctl -u nginx`,还可以添加`--since`参数指定时间范围,例如`journalctl -u nginx --since "1 day ago"`就能查看近一天的进程记录,既能看到进程启动退出时间,也能获取进程运行时的输出日志,排查服务异常非常方便。
不同方法适用于不同场景,按需选择即可快速找到需要的进程执行信息,满足日常排查、审计等不同需求。(全文约602字)



































