Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2045239
  • 博文数量: 354
  • 博客积分: 4955
  • 博客等级: 上校
  • 技术积分: 4579
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-21 11:46
文章分类

全部博文(354)

文章存档

2015年(1)

2013年(4)

2012年(86)

2011年(115)

2010年(67)

2009年(81)

我的朋友

分类: LINUX

2012-11-13 20:40:43

Linux系统的进程管理

作者: TechRepublic.com
Thursday, February 13 2003 3:34 PM 在Linux系统里,当前正在运行的程序实例称为进程。比如,当你启动Apache的时候,系统会为它分配一个进程ID。然后就可以用这个ID监视和控制这个程序。



进 程监视和控制是任何Linux系统管理员的核心任务。一个管理员可以终止("kill")、重启一个进程,甚至可以为它指定一个不同的优先级。标准的 Linux命令"ps"和"top"通常用于查看当前的进程列表。下面我来说明如何用这些命令和其它命令来管理Linux系统中的进程。

用ps监视进程
一个监视Linux的标准工具就是"ps",它是进程状态的简称。这个命令返回正在运行的程序的信息。这些信息可能包括程序是在哪个用户名下运行的,使用了多少CPU以及运行了多长时间。如果你要手工终止程序或者确定是哪个程序让系统变慢时,这些信息是很有用的。

如果你只是键入了"ps"这个命令,那么只能列出运行在当前终端下的进程。下面的例子是通过远程shell运行"ps"输出的结果:

$ ps
PID TTY TIME CMD
4684 pts/14 00:00:00 bash
27107 pts/14 00:00:00 ps

从 输出可以看出,分配给这个用户/终端的进程只有Bash shell和ps命令本身。你还可以看到为每个进程列出的PID(进程ID)和TTY、TIME和CMD。TTY指明这个进程正在运行在哪个终端 上,TIME指明了这个进程已经使用了多少CPU时间,CMD则是启动这个进程的命令名称。

用户可以看到,标准的ps命令只能列出基本的信息。要想获得Linux系统上运行的进程的详细信息,你必须加入一些命令行参数。

加入ps常用的aux参数后可以显示其他用户启动的进程(a)、查看系统中属于自己的进程(x)以及启动这个进程的用户和它启动的时间(u)。

表A示例了ps aux命令的输出。

现在还有其它更多的信息,增加了USER、 %CPU、%MEM、 VSZ、RSS、STAT和START这几个域。现在我们来看一下这些信息是什么含义。

首 先,用户可以看到所有的进程,而不仅仅是运行在终端上的那些。USER域指明了是哪个用户启动了这个命令。很多进程和系统一起启动,而且会把根或者一些系 统帐号列为USER。当然,其它一些进程是单独运行的。这个信息本身就可以帮助你缩小问题范围。假如某个用户启动了脚本,占用了服务器大量的I/O。如果 能马上找到是谁在运行这个程序,那么就可以大大加快解决问题的速度。

%CPU、 %MEM、VSZ和RSS这几个域都与系统资源有关。首先,用户可以查看某个进程占用了多少CPU。这个信息是实时显示的,所以很难用ps捕捉峰值。可能用户会发现,为了找到引发问题的那个进程需要不停地运行ps命令。

除 了CPU使用情况,还可以看到内存使用及其VSZ(虚拟内存大小)和RSS(常驻集大小)。VSZ表示如果一个程序完全驻留在内存的话需要占用多少内存空 间,而RSS指明了当前实际占用了多少内存。如果能够了解一个进程当前占用了多少内存,那么就可以确定这个进程是在正常运行还是出现了异常。程序通常都会 消耗比正常情况更多的内存和CPU。虽然程序员都在尽力确保代码正确地使用资源,但是有时候还是要由管理员来决定终止还是重启进程。

用户 可能会注意到在ps aux命令的输出结果里,大部分TTY域有个"?"。这是因为这些程序或者在系统启动的时候就开始运行了,或者是由初始化脚本(init script)启动的。这些进程没有控制终端,所以作了标记。另外,linux-sanity-check命令有一个TTY的值为pts/14。这个命令 是远程连接运行的,有与其关联的一个终端。当你的机器开放了多条连接,而你又想确定某个命令运行在哪个窗口的时候,这个信息是很有用的。

STAT 显示了进程当前的状态。在我们的例子里,很多进程处在睡眠状态,STAT域里的"S"指明了这一状态。这仅仅表明这些进程在等待某些事件发生--可能是用 户输入或者系统资源的可用性。linux-sanity-check命令则有一个R状态,这个状态表明进程当前正在运行。有时候你可以浏览一下这个列表然 后找那些R状态的进程。如果大部分进程处在睡眠状态而又有问题发生,那么只关注那些正在运行的进程是最好的方法。那种状态不一定能说明发生了问题,但是有 时候如果进程运行的时间过长可能意味着发生了某些深层次的问题。
阅读(934) | 评论(0) | 转发(0) |
0

上一篇:查看apache内存、cpu占用

下一篇:awk 列求和

给主人留下些什么吧!~~