如何find过去一直在运行的进程?

我被要求调查今天早上发生的高CPU使用率警报。 我用sar -p ,看到当时显示的高CPU使用率

接下来我用ps -eo pcpu,pid,user,args | sort -r -k1 | less ps -eo pcpu,pid,user,args | sort -r -k1 | less ps -eo pcpu,pid,user,args | sort -r -k1 | less列出在这个小时的前10名记忆猪

现在我怎么知道哪些stream程在上午的特定时间造成了瓶颈。 我是一名Java开发人员,而不是Linux专家。

这甚至有可能吗?

有几个选项:

  1. 使用定期将所需数据写入日志文件的脚本。 您可以使用cron将ps(和其他命令)的输出每x分钟写入一个日志文件。
  2. 更好的办法是使用一个专门的程序,为你做到这一点。 atop非常擅长这一点,在它保留日志文件保留。

atop可以通过EPEL回购CentOS / RHEL / Fedora,并通过Debian / Ubuntu的默认回购。

你可以像使用普通的实时顶级工具一样使用顶级实用工具,但行为稍有不同(请查看键盘input手册)。

更有趣的部分是:一旦安装了一个守护进程开始将数据logging到/ var / log / atop,并且您可以再次使用atop读取这些文件:

 atop -r /var/log/atop/atop_20160128 

然后你可以访问所有'顶部'function(sorting/查看内存/ CPU / IO使用情况等),你可以通过't'跳10分钟,'T'跳10分钟一个特定的时间通过“b”。

看看atop的manpage和谷歌有很多关于它的howtos。

可能还有其他的解决scheme,但是在做更多的定制设置之前,这是很容易理解和使用的,也是一个很好的开始。