0
点赞
收藏
分享

微信扫一扫

第1章 BashShell命令------------(ps、top、kill、killall)

1.3 监控程序

1.3.1 进程查看

         当一个程序在系统中运行,就称之为进程。ps可以生产关于运行在系统中的所有程序的大量信息。默认情况下,ps命令只显示属于当前用于并在当前终端中运行的进程。ps命令的基本输出显示了程序的进程ID(PID),其运行的终端(TTY)和进程使用的CPU时间。

ps命令复杂性是在于同时有两个版本。每个版本有自己不同的命令行参数集,用来控制信息的显示内容和显示方式。

 第1章 BashShell命令------------(ps、top、kill、killall)_关闭进程kill与killall             

上图是Unix类型的部分参数,使用实例如下所示:

 第1章 BashShell命令------------(ps、top、kill、killall)_killall参数列表_02       

 -e参数用于显示系统上运行的所有程序,-f参数用于扩展输出以显示一些有用的信息列:

Ø  UID:负责启动进程的用户

Ø  PID:进程的ID

Ø  PPID:父进程的PID(如果某个进程由另一进程启动)

Ø  C:进程存续期的处理器率

Ø  STIME:进程启动时的系统时间

Ø  TTY:进程从中启动的终端设备

Ø  TIME:运行程序所需的累积CPU时间

Ø  CMD:启动程序的名称。

1.3.2 实时进程监控

       ps命令对于收集在系统中运行的进程的信息非常实用,但它同时也有一个缺点。ps命令只能显示特定时间点信息。如果查看经常在内存中换进换出的进程的趋势,ps命令就无能为力了。然而top命令可以解决此问题,top命令用于显示与ps命令相似的进程信息,不过top采用的实时模式。

第1章 BashShell命令------------(ps、top、kill、killall)_实时监控top_03        

第一行显示了当前时间、系统已正常运行的时间、已登录的用户数量以及系统的平均负载时间。

平均负载包括3个值,分别是1分钟负载值、5分钟平均负载值、15分钟平均负载值。值越高则系统负载越大。短期活动促使1分钟负载值冲高是很常见。如果15分钟负载值处于高位,则系统可能遇到麻烦。在Linux系统管理中,定义确切的高负载平均值是需要技巧的。该值依赖于平时在系统中运行的程序和硬件配置。同一情况,在某个系统为高值,而在另一个系统中则可能是正常值。一般而言,如果平均负载超过了2,则便是系统趋于繁忙。

第二行显示一般进程信息(在top中称为任务):有多少进程正在运行、睡眠、已停止和僵死(已经运行完毕,但父进程未响应)。

下一行显示CPU一般信息。top命令会根据进程所有者(用户或系统进程)和进程的状态(运行、空闲或等待)将CPU利用率划分成若干个类别。

下一行显示系统物理内存的状态:内存总量、当前使用的内存量、空闲内存量。

下一行显示系统交换内存区域的状态,包括与前面相同的信息。

显示当前正在运行的进程的详细列表,其中一些信息列与ps输出类似:

Ø  PID:进程的ID

Ø  USER:进程所有者的用户名

Ø  PR:进程的优先级

Ø  NI:进程的nice value

Ø  VIRT:进程所使用的虚拟内存总量

Ø  RES:进程当前正使用的物理内存量

Ø  SHR:进程与其他进程共享的内存量

Ø  S:进程状态(D=可中断睡眠,R=运行中,S=睡眠,T=已追踪或已停止,Z=僵死)

Ø  %CPU:进程正使用的CPU时间份额

Ø  %MEM:进程正使用的可用物理内存份额

Ø  TIME+:进程启动后已使用的总CPU时间

Ø  COMMAND:进程的命令行名称(已启动程序)

         默认情况下,当启动top时,它会根据%CPU的值对进程进行排序。可以在运行top时使用交互式命令来更改排序顺序。各交互式命令都是一个字符,可以在top运行过程中按下该键,更改程序的行为:

 第1章 BashShell命令------------(ps、top、kill、killall)_killall参数列表_04       

1.3.3 停止进程

         有时,进程会进入挂起状态,这时需要稍作调整让它恢复运行或停止运行;另一种情况是,进程不受CPU控制且拒绝停止。在Liunx中,各进程使用信号相互通信。进程信号是进程可识别的预定义信息,进程可以选择忽略它或做出响应,大多数进行编写的应用程序都能接收标准Unix进程信号,并对此做出响应。信号如下:

第1章 BashShell命令------------(ps、top、kill、killall)_关闭进程kill与killall_05        

Linux提供两个命令用于发送进程信号给运行中的进程。

1.kill

kill命令运行进行ID(PID)将信号发送给相关进程。默认情况下,kill命令会发送一个TERM命令给命令行中列出的所有PID。

TERM信号将友好地通知进程停止运行。如果某个进程已失控,它极有可能会忽略该请求。当需要一些强制措施时,可以使用-s参数来指定其信号(使用它们的名称或信号编号)。

kill用法说明如下图所示:

第1章 BashShell命令------------(ps、top、kill、killall)_killall参数列表_06

常用的流程是首先尝试TERM信号。如果进程忽略该信号,则尝试INT或HUP信号。如果进程能识别这些信号,那么它会在关闭之前停止执行以前的操作。最具强制力的信号是KILL信号。当进程接收到此信号,它会立即停止运行。这时会对文件造成破坏。执行命名了实例如吓:

第1章 BashShell命令------------(ps、top、kill、killall)_关闭进程kill与killall_07        

2.killall命令

killall命令非常强大,它可以根据进程名称(而非PID)来停止进程。killall命令还允许使用通配符,它对于处理出错的系统非常有用。作为根用户登录时,使用killall命令时要格外小心。若通配符使用不当,则很容易意外停止重要的系统进程。这可能会导致文件系统受损。

第1章 BashShell命令------------(ps、top、kill、killall)_top参数列表_08        

 


举报

相关推荐

0 条评论