UNIX中最费CPU的进程是什么

66次阅读
没有评论

共计 1451 个字符,预计需要花费 4 分钟才能阅读完成。

UNIX 中最费 CPU 的进程是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

多用户的 UNIX 计算机系统在运行过程中,有时会感觉到运算速度突然慢下来,有时甚至连从键盘输入字符也得过好久才会有反应。有经验的人一定会知道,这时计算机中一定在运行一个非常耗费 CPU 的进程。这样的进程有时是某个人在执行一个很占 CPU 的程序,有时则可能是系统中出了意外情况,系统本身在进行处理。无论是哪种情况,系统管理员都应及时找出这样的进程,并做出相应的处理。

UNIX 虽然提供了“acct”等一系列记账程序,但这些程序只能在进程结束后才能显示运行时间和占用 CPU 时间等信息,不能实时计算单位时间内哪一个进程占用 CPU 时间最多。

为此本人用 shell 语言编写了一段程序,利用 UNIX 提供的一些实用程序,实现了上述功能。

此段程序中包含 ps、cut、diff 等 UNIX 实用程序,下面先简单介绍一下这些实用程序的功能。

ps:用来显示当前系统中进程的有关信息。用 - e 参数则显示系统中所有进程的信息。使用 - f 参数则显示各进程完整的信息;

cut:用于以列为单位对文件进行剪裁。参数“-c -15,33-”表示把输入文件每行前 15 个字符及第 33 个字符以后直到行尾的所有字符放入输出文件;

echo:用于向屏幕上显示提示信息;

sleep:可以让 shell 程序等待若干秒,然后再执行后面的语句;

diff:用于对两个文件进行比较,不同之处则显示出来;

sort:可对文件中的各行进行排序,排序结果可显示出来;

grep:可用来找出文件中满足一定条件的行。参数“^”表示找出 *** 列为空格的各行;

|:为管道的符号,可实现把前面命令的输出作为后面命令输入的作用,这样就可省略生成中间文件的步骤,提高执行效率;

:表示对输出进行重定向,把本来应显示在屏幕上的东西输出到文件中。

程序内容如下:

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

程序首先取得系统中所有进程的信息并把其中有用的字段放入临时文件 tt1 中。接着让程序等待 20 秒 (时间可依具体情况进行调整)。

然后再一次取得所有进程的信息,并把所有的字段放入临时文件 tt2 中。

对两个临时文件进行比较,找出 20 秒前后信息不同的那些进程 (其中就有消耗 CPU 时间已经发生了变化的进程)。

去掉进行比较时产生的“”和“”,把结果放入临时文件 tt3 中。

对 tt3 中的内容进行排序,把耗费 CPU 时间发生变化的同一进程的前后信息排在一起。grep“^”则是用来去掉执行此 shell 程序时产生的一些中间命令进程的信息。

再用 cut 删去每行中过长的进程信息,使输出更加清晰。而 grep -v 0:00 则用来去掉 20 秒前后只出现一次的进程。程序执行至此,在 20 秒前后耗费 CPU 时间不同的进程就显示在屏幕上了,从中可以很容易地找出所要找的进程。*** 为了不在系统中留下无用的垃圾文件,还要把三个临时文件全都删去。

关于 UNIX 中最费 CPU 的进程是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1451字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)