监测程序(ps): $ ps -- 默认情况下, ps 命令只会显示运行在当前控制台下的属于当前用户的进程(!注意,shell也只是运行在系统上的另一个程序而已。以及 ps 命令本身) ps的三种风格: 一、Unix风格的 ps 命令参数: -A 显示所有进程 -N 显示与指定参数不符的所有进程 -a 显示除控制进程(session leader ① )和无终端进程外的所有进程 -d 显示除控制进程外的所有进程 -e 显示所有进程 -C cmdlist 显示包含在 cmdlist 列表中的进程 -G grplist 显示组ID在 grplist 列表中的进程 -U userlist 显示属主的用户ID在 userlist 列表中的进程 -g grplist 显示会话或组ID在 grplist 列表中的进程 ② -p pidlist 显示PID在 pidlist 列表中的进程 -s sesslist 显示会话ID在 sesslist 列表中的进程 -t ttylist 显示终端ID在 ttylist 列表中的进程 -u userlist 显示有效用户ID在 userlist 列表中的进程 -F 显示更多额外输出(相对 -f 参数而言) -O format 显示默认的输出列以及 format 列表指定的特定列 -M 显示进程的安全信息 -c 显示进程的额外调度器信息 -f 显示完整格式的输出 -j 显示任务信息 -l 显示长列表 -o format 仅显示由 format 指定的列 -y 不要显示进程标记(process flag,表明进程状态的标记) -Z 显示安全标签(security context) ① 信息 -H 用层级格式来显示进程(树状,用来显示父进程) -n namelist 定义了 WCHAN 列显示的值 -w 采用宽输出模式,不限宽度显示 -L 显示进程中的线程 -V 显示 ps 命令的版本号 ps -ef ps -l F :内核分配给进程的系统标记。 S :进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵化,进程已结束但父进程已不存在;T代表停止)。 UID:启动这些进程的用户。 PID:进程的进程ID。 PPID:父进程的进程号(如果该进程是由另一个进程启动的)。 C:进程生命周期中的CPU利用率。 PRI :进程的优先级(越大的数字代表越低的优先级)。 NI :谦让度值用来参与决定优先级。 ADDR :进程的内存地址。 SZ :假如进程被换出,所需交换空间的大致大小。 WCHAN :进程休眠的内核函数的地址。 TTY:进程启动时的终端设备。 TIME:运行进程需要的累计CPU时间。 CMD:启动的程序名称。 STIME:进程启动时的系统时间。 二、BSD风格的 ps 命令参数: T 显示跟当前终端关联的所有进程 a 显示跟任意终端关联的所有进程 g 显示所有的进程,包括控制进程 r 仅显示运行中的进程 x 显示所有的进程,甚至包括未分配任何终端的进程 U userlist 显示归 userlist 列表中某用户ID所有的进程 p pidlist 显示PID在 pidlist 列表中的进程 t ttylist 显示所关联的终端在 ttylist 列表中的进程 O format 除了默认输出的列之外,还输出由 format 指定的列 X 按过去的Linux i386寄存器格式显示 Z 将安全信息添加到输出中 j 显示任务信息 l 采用长模式 o format 仅显示由 format 指定的列 s 采用信号格式显示 u 采用基于用户的格式显示 v 采用虚拟内存格式显示 N namelist 定义在 WCHAN 列中使用的值 O order 定义显示信息列的顺序 S 将数值信息从子进程加到父进程上,比如CPU和内存的使用情况 c 显示真实的命令名称(用以启动进程的程序名称) e 显示命令使用的环境变量 f 用分层格式来显示进程,表明哪些进程启动了哪些进程 h 不显示头信息 k sort 指定用以将输出排序的列 n 和 WCHAN 信息一起显示出来,用数值来表示用户ID和组ID w 为较宽屏幕显示宽输出 H 将线程按进程来显示 m 在进程后显示线程 L 列出所有格式指定符 V 显示 ps 命令的版本 ps l VSZ:进程在内存中的大小,以千字节(KB)为单位。 RSS:进程在未换出时占用的物理内存。 STAT:代表当前进程状态的双字符状态码。 第一个字符采用了和Unix风格 S 列相同的值,表明进程是在休眠、运行还是等待。 第二个参数进一步说明进程的状态 < :该进程运行在高优先级上。 N :该进程运行在低优先级上。 L :该进程有页面锁定在内存中。 s :该进程是控制进程。 l :该进程是多线程的。 + :该进程运行在前台。 三、GNU风格的 ps 命令参数: --deselect 显示所有进程,命令行中列出的进程 --Group grplist 显示组ID在 grplist 列表中的进程 --User userlist 显示用户ID在 userlist 列表中的进程 --group grplist 显示有效组ID在 grplist 列表中的进程 --pid pidlist 显示PID在 pidlist 列表中的进程 --ppid pidlist 显示父PID在 pidlist 列表中的进程 --sid sidlist 显示会话ID在 sidlist 列表中的进程 --tty ttylist 显示终端设备号在 ttylist 列表中的进程 --user userlist 显示有效用户ID在 userlist 列表中的进程 --format format 仅显示由 format 指定的列 --context 显示额外的安全信息 --cols n 将屏幕宽度设置为 n 列 --columns n 将屏幕宽度设置为 n 列 --cumulative 包含已停止的子进程的信息 --forest 用层级结构显示出进程和父进程之间的关系 --headers 在每页输出中都显示列的头 --no-headers 不显示列的头 --lines n 将屏幕高度设为 n 行 --rows n 将屏幕高度设为 n 排 --sort order 指定将输出按哪列排序 --width n 将屏幕宽度设为 n 列 --help 显示帮助信息 --info 显示调试信息 --version 显示 ps 命令的版本号 实时监控(top): 第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载(最近1分钟,5分钟,15分钟)。通常,如果系统的负载值超过了2,就说明系统比较繁忙了 第二行显示了进程概要信息—— top 命令的输出中将进程叫作任务(task):有多少进程处在运行、休眠、停止或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)。 第三行显示了CPU的概要信息。 top 根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待)将CPU利用率分成几类输出 紧跟其后的两行说明了系统内存的状态。 第四行说的是系统的物理内存:总共有多少内存,当前用了多少,还有多少空闲。 第五行说的是同样的信息,不过是针对系统交换空间(如果分配了的话)的状态而言的。 PID:进程的ID。 USER:进程属主的名字。 PR:进程的优先级。 NI:进程的谦让度值。 VIRT:进程占用的虚拟内存总量。 RES:进程占用的物理内存总量。 SHR:进程和其他进程共享的内存总量。 S:进程的状态(D代表可中断的休眠状态,R代表在运行状态,S代表休眠状态,T代表跟踪状态或停止状态,Z代表僵化状态)。 %CPU:进程使用的CPU时间比例。 %MEM:进程使用的内存占可用内存的比例。 TIME+:自进程启动到目前为止的CPU时间总量。 COMMAND:进程所对应的命令行名称,也就是启动的程序名。 在 top 命令运行时键入可改变 top 的行为。键入f通过方向键选择字段:键入s选择需要排序的字段,键入d新增删除显示字段,键入q退出。 Linux进程信号 1 HUP 挂起 2 INT 中断 3 QUIT 结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能终止 17 STOP 无条件停止运行,但不终止 18 TSTP 停止或暂停,但继续在后台运行 19 CONT 在 STOP 或 TSTP 之后恢复执行 结束进程kill与killall,kill通过PID结束进程,killall支持进程名和通配符 kill 3940 kill -s HUP 3940 -- 适用于不服管教的进程 killall http* -- 适用于群杀