实时监视Linux中的进程

原创 2004年07月27日 22:05:00
作者信息:沈阳银行卡网络服务中心 石立

  多用户的Linux系统在运行过程中,有时运算速度会突然慢下来,甚至从键盘输入字符也得过好久才会有反应。一般地,出现这种情况的原因是计算机在运行一个非常耗费CPU的进程。这样的进程有时是某个人在执行一个很占CPU的程序,例如程序进入了死循环,有时则可能是系统中出了什么意外情况,系统本身在进行处理。无论是哪一种情况,系统管理员都应及时找出这样的进程,并做出相应的处理。

  Linux虽然提供了一些处理程序,但这些程序只能在进程结束后才能显示运行时间和占用的CPU时间等信息,不能实时计算单位时间内哪一个进程占用的CPU时间较多。笔者用shell语言编写了一段程序,利用Linux提供的一些实用程序,实现了对进程的实时监视。

实用程序

  shell中使用了 ps、cut、diff等Linux实用程序,它们的功能简单介绍如下:

● ps : 用来显示当前系统中进程的有关信息,加-e 参数显示系统中所有进程的简单信息,使用 -f 参数则显示各进程完整的信息;
● cut: 用于以列为单位对文件进行剪裁,参数 “-c -15,33-”表示把输入文件每行头15个字符及第33个字符以后直到行尾的所有字符放入输出文件;
● echo:用于在屏幕上显示提示信息;
● sleep:可以让 shell 程序等待若干秒,然后再执行下面的语句;
● diff: 用于对两个文件进行比较,并把不同之处显示出来;
● sort: 用于对文件中的各行进行排序,可以显示排序结果;
● grep:用来找出文件中满足一定条件的行,参数“^”表示找出第一列为空格的各行。

  另外,程序中“|”为管道符号,可实现把前面命令的输出作为后面命令的输入的功能,这样就可省略生成中间文件的步骤,提高执行效率。“>”表示对输出进行重定向,把本来应显示在屏幕上的东西输出到文件中。

shell程序

  shell程序首先取得系统中所有进程的信息并把其中有用的字段放入临时文件 tt1 中。接着让程序等待20秒钟(时间可依具体情况进行调整)。然后再一次取得所有进程的信息,并把所有的字段放入临时文件 tt2 中。这时对两个临时文件进行比较,找出前后20秒信息不同的那些进程(其中就有消耗CPU时间已经发生了变化的进程)。去掉进行比较时产生的“>”和“<”,把结果存入临时文件tt3中。然后对tt3中的内容进行排序,把耗费CPU时间发生变化的同一进程的前后信息排在一起。

ps -ef|cut -c -15,33->tt1
echo Please wait a while...
sleep 20
ps -ef|cut -c -15,33->tt2
echo Attention !
echo =========================
diff tt1 tt2|cut -c 2->tt3
sort tt3|grep ‘^ ’|cut -c -83|grep -v 0:00
echo =========================
echo That is ok!
rm tt1 tt2 tt3

  上述grep‘^ ’是用来去掉执行此shell程序时产生的一些中间命令进程的信息。再用cut删去每行中过长的进程信息,使输出更加清晰。而grep -v 0:00 则用来去掉前后20秒只出现过一次的进程。这样,在前后20秒耗费CPU时间不同的进程就显示在屏幕上了,从中可以很容易地找出出现问题的进程。最后,为了不在系统中留下无用的垃圾文件,还要把3个临时文件全都删除。

Linux下实现脚本监测特定进程占用内存情况

内存泄露是C/C++程序员经常需要面对的问题,除了有效地经常查找出内存泄露的位置外,在嵌入式的开发中,还经常需要确定自己写的程序是否存在内存泄露的情况Linux系统下,我们可以利用以下命令来获取特定进...
  • keheinash
  • keheinash
  • 2016年02月06日 23:19
  • 3467

Linux监控重要进程的实现方法

本文介绍linux监控重要进程的实现方法:脚本检测和子进程替换。
  • lcy4599
  • lcy4599
  • 2016年08月21日 15:45
  • 2471

Linux监控cpu以及内存使用情况之top命令

top命令是Linux下常用的性能分析工具,比如cpu、内存的使用,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。 top显示系统当前的进程和其他状况,是一个动态显示过...
  • hsd2012
  • hsd2012
  • 2016年05月12日 20:34
  • 5290

Linux在嵌入式系统中有关进程调度算法的实时性改进

摘 要:分析了普通Linux 内核实时性不足的主要原因。 介绍了目前较为有效的改进Linux 实时性的方法。具体地研究了普通Linux 内核在嵌入式系统中的有关进程调度算法的实时性不足的具体因素,并提...
  • b02042236
  • b02042236
  • 2011年01月26日 21:52
  • 877

Linux 运行进程实时监控pidstat命令详解

Linux 运行进程实时监控pidstat命令详解 简介  pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运...
  • hualusiyu
  • hualusiyu
  • 2013年06月11日 09:12
  • 676

Linux 运行进程实时监控pidstat命令详解

简介  pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示...
  • joeyon
  • joeyon
  • 2014年08月27日 11:33
  • 537

Linux 运行进程实时监控pidstat命令详解

简介  pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自...
  • shjh369
  • shjh369
  • 2015年11月04日 15:05
  • 192

Linux 运行进程实时监控pidstat命令详解

简介  pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示...
  • jiangguilong2000
  • jiangguilong2000
  • 2013年10月10日 00:40
  • 4804

在 Linux 上实现基于 Socket 的多进程实时通信

套接口(Socket)为目前Linux上最为广泛使用的一种的进程间通信机制,与其他的Linux通信机制不同之处在于除了它可用于单机内的进程间通信以外,还可用于不同机器之间的进程间通信。但是由于Sock...
  • zhangxizhicn
  • zhangxizhicn
  • 2011年11月29日 17:50
  • 402

Linux&nbsp;运行进程实时监控pidstat命…

  • danssion
  • danssion
  • 2014年06月25日 12:09
  • 284
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实时监视Linux中的进程
举报原因:
原因补充:

(最多只允许输入30个字)