linux查看指定程序的资源占用

      linux下,或者说*inx下有个top命令,可以让我们实时的监控进程运行状态,包括cpu占用,内存占用等。
      常用的管理指令像c查看命令行参数,s调整刷新时间,M以内存排序,P以cpu排序,N以进程排序就不说了,这里咱们说说查看指定进程资源占用这一特殊情况。比如说:我只查看apache或者mysql的资源占用情况。怎样才能从一堆的信息中找到这个有用信息呢?
      1.特定用户
      一般像apache或者mysql这些服务我们都会用专门的帐号来运行它们,这样的话我们可以直接利用top的U or u指令,指定特定的用户。我们就可以得到想要的信息了。
这种方法个人感觉很强大,因为它可以适应指定用户进程数不断变动的情况例如apache。
      2.指定进程
      因为习惯上,我们会将很多服务都以root的身份运行。这种情况怎么挑出来有用的信息呢?那我们就要找不同点了,是内存占用高,cpu占用高还是进程id高?对于启动以后不再增加进程的程序笔者又想出来一招。开源的工具总会给你惊喜,只有你想不到的,没有它做不到的。到底怎么办呢?仔细的读了几遍top的man,发现了一个有用的参数-p。而且它支持同时传入多个pid。
于是一条接近无敌的指令出现了:top -p `pgrep mysql |xargs perl -e "print join ',',@ARGV" 
分析一下:本例以mysql为例。先通过pgrep取得所有包含关键字mysql的进程id,然后通过一句perl指令把得到的进程组合成top -p参数可以接受的格式,然后传给top。
      这条指令虽然达到了目的,但是个人觉得有点繁锁。使用了一句perl命令主要是不知道怎么用bash命令把得到的进程ip变成pid1,pid2,pid3这样的形式,笔者在这一步卡了十多分钟。另外得到结果以后怎么通过管道+xargs传给top -p笔者也没有想出来,希望有更简捷方法的朋友指点:)

本文出自 “rainbird” 博客,转载请与作者联系!

你可能感兴趣的:(linux,cpu,top,查看指定进程)