veket官方网站论坛

veket

 找回密码
 要注册
搜索
12
返回列表 发新帖
楼主: gfbmgy

linux进程管理

[复制链接]
 楼主| 发表于 2010-4-24 15:34 | 显示全部楼层
  4.top命令

  top命令和ps命令的基本作用是相同的,用于显示系统当前的进程和其他状况。但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。准确地说,top命令提供了即时的对系统处理器的状态监视。它将显示系统中CPU 最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过互动式命令或者在个人定制文件中进行设置。

  下面是该命令的语法格式:

  top [-] [d delay] [q] [c] [S]

  其中:

  d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变它。

  q 该选项将使top没有任何延迟地进行刷新。如果调用程序有超级用户许可权,那么top将以尽可能高的优先顺序运行。

  S 指定累计模式。

  s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

  i 使top不显示任何闲置或者僵死进程。

  c 显示整个命令行而不只是显示命令名。

  top命令显示的项目很多,默认值是每5秒刷新一次,当然这是可以设置的。

  显示的各项目为:uptime项显示的是系统启动时间、已经运行的时间和3个平均负载值(最近1秒、5秒、15秒的负载值)。 processes表示自最近一次刷新以来的运行进程总数。当然这些进程被分为正在运行的、休眠的、停止的等很多种类。进程和状态显示可以通过交互命令t 来实现。

  CPU states用于显示用户模式、系统模式、优先顺序进程(只有优先顺序为负的列入考虑)和闲置等各种情况所占用CPU时间的百分比。优先顺序进程所消耗的时间也被列入到用户和系统的时间中,所以总的百分比将大于100%。

  Mem为内存使用情况统计,其中包括总的可用内存、空闲内存、已用内存、共用内存和缓存所占内存的情况。

  Swap为交换空间统计,其中包括总的交换空间、可用交换空间、已用交换空间。

  PID 每个进程的ID。

  PPID 每个进程的父进程ID。

  UID 每个进程所有者的UID 。

  USER 每个进程所有者的用户名。

  PRI 每个进程的优先顺序别。

  NI 该进程的优先顺序值。

  SIZE 该进程的代码大小加上资料大小再加上堆叠空间大小的总数,单位是KB。

  TSIZE 该进程的代码大小。对于内核进程这是一个很奇怪的值。

  DSIZE 资料和堆叠的大小。

  TRS 文本驻留大小。

  D 被标记为“不干净”的页项目。

  LIB 使用的库页的大小。对于ELF进程没有作用。

  RSS 该进程占用的实体内存的总数量,单位是KB。

  SHARE 该进程使用共用内存的数量。

  STAT 该进程的状态。其中,S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态。

  TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个进程子进程所占用的时间。且标题会变成CTIME。

  %CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。

  %MEM 该进程占用的实体内存占总内存的百分比。

  COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整的命令行。

  下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被遮掉。

  <空格> 立即刷新显示。

  Ctrl+L 擦除并且重写屏幕。

  h或者? 显示帮助画面,给出一些简短的命令总结说明。

  k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程的信号。一般的终止进程可以使用信号15;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被遮罩。

  i 忽略闲置和僵死进程。这是一个开关式命令。

  q 退出程序。

  r 重新安排一个进程的优先顺序。系统提示用户输入需要改变的进程PID以及需要设置 的进程优先顺序值。输入一个正值将使优先顺序降低,反之则可以使该进程拥有更高的优先权。默认值是10。

  S 切换到累计模式。

  s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成ms。输入0则系统将不断刷新,默认值是5s。需要注意的是,如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。

  f或者F 从当前显示中添加或者删除项目。

  o或者O 改变显示项目的顺序。

  l 切换显示平均负载和启动时间信息。

  m 切换显示内存信息。

  t 切换显示进程和CPU状态信息。

  c 切换显示命令名称和完整命令行。

  M 根据驻留内存大小进行排序。

  P 根据CPU使用百分比大小进行排序。

  T 根据时间/累计时间进行排序。

  W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

  从上面的介绍中可以看到,top命令是一个功能十分强大的监控系统工具,尤其对于系统管理员而言更是如此。一般的用户可能会觉得ps命令其实就够用了,但是top命令的强劲功能确实提供了不少方便。下面来看看实际使用的情况。
 楼主| 发表于 2010-4-24 15:35 | 显示全部楼层
  5.Kill命令

  当需要中断一个前台进程的时候,通常是使用组合键【Ctrl+C】;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于 kill命令。该命令可以终止后台进程。终止后台进程的原因很多,或许是该进程占用的CPU时间过,或许是该进程已经挂死。总之这种情况是经常发生的。

  kill命令是通过向进程发送指定的信号来结束进程的。如果没有指定发送信号,那么默认值为TERM信号,它将终止所有不能捕获该信号的进程。至于那些可以捕获该信号的进程可能就需要使用kill(9)信号了,该信号是不能被捕捉的。

  kill命令的语法格式很简单,大致有以下两种方式:

  kill [-s 信号 | -p ] [ -a ] 进程号 ...

  kill -l [信号]

  其中,

  -s 指定需要送出的信号,既可以是信号名也可以是对应数位。

  -p 指定kill命令只是显示进程的pid,并不真正送出结束信号。

  -l 显示信号名称列表,这也可以在/usr/include/Linux/signal.h文件中找到。

  下面看看该命令的使用。

  例在执行一条find命令时由于时间过长,决定终止该进程。

  首先应该使用ps命令来查看该进程对应的PID。键入ps,显示如下:

  PID TTY TIME COMMAND

  285 1 00:00:00 -bash

  287 3 00:00:00 -bash

  289 5 00:00:00 /sbin/mingetty tty5

  290 6 00:00:00 /sbin/mingetty tty6

  312 3 00:00:00 telnet bbs3

  341 4 00:00:00 /sbin/mingetty tty4

  345 1 00:00:00 find / -name foxy.jpg

  348 1 00:00:00 ps

  可以看到,该进程对应的PID是345,现在使用kill命令来终止该进程。键入:

  # kill 345

  再用ps命令查看,就可以看到,find进程已经被终止了。

  例:杀掉进程11721。

  # ps

  PID TTY TIME COMMAND

  11668 p1 00:00:00 -tcsh

  11721 p1 00:00:00 cat

  11737 p1 00:00:00 ps

  # kill 11721

   [1] Terminated cat

  有时候可能会遇到这样的情况,某个进程已经挂起或闲置,使用kill命令却终止不掉。这时候就必须发送信号9,强行关闭此进程。当然这种“野蛮”的方法很可能会导致打开的文件出现错误或者资料丢失。所以不到万不得已的时候不要使用强制结束的办法。如果连信号9都不回应,那恐怕就只有重新启动电脑了。
 楼主| 发表于 2010-4-24 15:35 | 显示全部楼层
  6.nohup命令

  理论上,我们一般退出Linux系统时会把所有的程序全部结束,包括那些后台程序。有些时候,例如你正在编辑一个很长的程序,但是你下班或是有事需要先退出系统,你又不希望系统把你编辑那么久的程序结束,希望退出系统时,程序还能继续执行。这时,我们就可以使用nohup命令使进程在用户退出后仍继续执行。

  一般我们都是让这些进程在后台执行,结果会写到用户自己目录下的nohup.out文件里(也可以使用输出重定向,让它输出到一个特定的文件)。

  例如:

  # nohup sort sales.dat &

  这条命令告诉sort命令忽略用户已退出系统,它应该一直运行,直到进程完成。利用这种方法,可以启动一个要运行几天甚至几周的进程,而且在它运行时,用户不需要去登录。

  nohup命令把一条命令的所有输出和错误信息送到nohup.out文件中。若将输出重定向,则只有错误信息放在nohup.out文件中。
发表于 2012-11-29 16:50 | 显示全部楼层

原创教程很棒啊  支持一下!
您需要登录后才可以回帖 登录 | 要注册

本版积分规则

QQ|手机版|Archiver|veket官方网站论坛 ( 粤ICP备 11052856 )

GMT+8, 2024-5-8 08:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表