学习啦>学习电脑>操作系统>操作系统基础知识>

Linux操作系统的进程管理详解(2)

佳洲分享

  Linux操作系统的进程管理:3、终止进程的工具 kill 、killall、pkill、xkill

  终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。

  另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。

  3.1 kill

  kill的应用是和ps 或pgrep 命令结合在一起使用的;

  kill 的用法:

  kill [信号代码] 进程ID

  注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止;

  举例:

  [root@localhost ~]# ps auxf |grep httpd

  root 4939 0.0 0.0 5160 708 pts/3 S+ 13:10 0:00 _ grep httpd

  root 4830 0.1 1.3 24232 10272 ? Ss 13:02 0:00 /usr/sbin/httpd

  apache 4833 0.0 0.6 24364 4932 ? S 13:02 0:00 _ /usr/sbin/httpd

  apache 4834 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd

  apache 4835 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd

  apache 4836 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd

  apache 4837 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd

  apache 4838 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd

  apache 4839 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd

  apache 4840 0.0 0.6 24364 4928 ? S 13:02 0:00 _ /usr/sbin/httpd

  我们查看httpd 服务器的进程;您也可以用pgrep -l httpd 来查看;

  我们看上面例子中的第二列,就是进程PID的列,其中4830是httpd服务器的父进程,从4833-4840的进程都是它4830的子进程;如果我们杀掉父进程4830的话,其下的子进程也会跟着死掉;

  [root@localhost ~]# kill 4840 注:杀掉4840这个进程;

  [root@localhost ~]# ps -auxf |grep httpd 注:查看一下会有什么结果?是不是httpd服务器仍在运行?

  [root@localhost ~]# kill 4830 注:杀掉httpd的父进程;

  [root@localhost ~]# ps -aux |grep httpd 注:查看httpd的其它子进程是否存在,httpd服务器是否仍在运行?

  对于僵尸进程,可以用kill -9 来强制终止退出;

  比如一个程序已经彻底死掉,如果kill 不加信号强度是没有办法退出,最好的办法就是加信号强度 -9 ,后面要接杀父进程;比如;

  [root@localhost ~]# ps aux |grep gaim

  beinan 5031 9.0 2.3 104996 17484 ? S 13:23 0:01 gaim

  root 5036 0.0 0.0 5160 724 pts/3 S+ 13:24 0:00 grep gaim

  或

  [root@localhost ~]# pgrep -l gaim

  5031 gaim

  [root@localhost ~]# kill -9 5031

  3.2 killall

  killall 通过程序的名字,直接杀死所有进程,咱们简单说一下就行了。

  用法:killall 正在运行的程序名

  killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行;

  举例:

  [root@localhost beinan]# pgrep -l gaim

  2979 gaim

  [root@localhost beinan]# killall gaim

  3.3 pkill

  pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

  应用方法:

  #pkill 正在运行的程序名

  举例:

  [root@localhost beinan]# pgrep -l gaim

  2979 gaim

  [root@localhost beinan]# pkill gaim

  3.4 xkill

  xkill 是在桌面用的杀死图形界面的程序。比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消;

  xkill 调用方法:

  [root@localhost ~]# xkill

  Linux操作系统的进程管理:4、top 监视系统任务的工具

  和ps 相比,top是动态监视系统任务的工具,top 输出的结果是连续的;

  4.1 top 命令用法及参数;

  top 调用方法:

  top 选择参数

  参数:

  -b 以批量模式运行,但不能接受命令行输入;

  -c 显示命令行,而不仅仅是命令名;

  -d N 显示两次刷新时间的间隔,比如 -d 5,表示两次刷新间隔为5秒;

  -i 禁止显示空闲进程或僵尸进程;

  -n NUM 显示更新次数,然后退出。比如 -n 5,表示top更新5次数据就退出;

  -p PID 仅监视指定进程的ID;PID是一个数值;

  -q 不经任何延时就刷新;

  -s 安全模式运行,禁用一些效互指令;

  -S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程;

  交互式命令键位:

  space 立即更新;

  c 切换到命令名显示,或显示整个命令(包括参数);

  f,F 增加显示字段,或删除显示字段;

  h,? 显示有关安全模式及累积模式的帮助信息;

  k 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15)

  i 禁止空闲进程和僵尸进程;

  l 切换到显法负载平均值和正常运行的时间等信息;

  m 切换到内存信息,并以内存占用大小排序;

  n 提示显示的进程数,比如输入3,就在整屏上显示3个进程;

  o,O 改变显示字段的顺序;

  r 把renice 应用到一个进程,提示输入PID和renice的值;

  s 改变两次刷新时间间隔,以秒为单位;

  t 切换到显示进程和CPU状态的信息;

  A 按进程生命大小进行排序,最新进程显示在最前;

  M 按内存占用大小排序,由大到小;

  N 以进程ID大小排序,由大到小;

  P 按CPU占用情况排序,由大到小

  S 切换到累积时间模式;

  T 按时间/累积时间对任务排序;

  W 把当前的配置写到~/.toprc中;

  4.2 top 应用举例;

  [root@localhost ~]# top

  然后根据前面所说交互命令按个尝试一下就明白了,比如按M,就按内存占用大小排序;这个例子举不举都没有必要了。呵。。。。。。

  当然您可以把top的输出传到一个文件中;

  [root@localhost ~]# top > mytop.txt

  然后我们就可以查看mytop文件,以慢慢的分析系统进程状态;

  Linux操作系统的进程管理:5、进程的优先级:nice和renice

  在Linux 操作系统中,进程之间是竟争资源(比如CPU和内存的占用)关系。这个竟争优劣是通过一个数值来实现的,也就是谦让度。高谦让度表示进程优化级别最低。负值或0表示对高优点级,对其它进程不谦让,也就是拥有优先占用系统资源的权利。谦让度的值从 -20到19。

  目前硬件技术发展极速,在大多情况下,不必设置进程的优先级,除非在进程失控而疯狂占用资源的情况下,我们有可能来设置一下优先级,但我个人感觉没有太大的必要,在迫不得已的情况下,我们可以杀掉失控进程。

  nice 可以在创建进程时,为进程指定谦让度的值,进程的优先级的值是父进程SHELL的优先级的值与我们所指定谦让度的相加和。所以我们在用nice设置程序的优先级时,所指定数值是一个增量,并不是优先级的绝对值;

  nice 的应用举例:

  [root@localhost ~]# nice -n 5 gaim & 注:运行gaim程序,并为它指定谦让度增量为5;

  所以nice的最常用的应用就是:

  nice -n 谦让度的增量值 程序

  renice 是通过进程ID(PID)来改变谦让度,进而达到更改进程的优先级。

  renice 谦让度 PID

  renice 所设置的谦让度就是进程的绝对值;看下面的例子;

  [root@localhost ~]# ps lax |grep gaim

  4 0 4437 3419 10 -5 120924 20492 - S< pts/0 0:01 gaim

  0 0 4530 3419 10 -5 5160 708 - R<+ pts/0 0:00 grep gaim

  [root@localhost ~]# renice -6 4437

  4437: old priority -5, new priority -6

  [root@localhost ~]# ps lax |grep gaim

  4 0 4437 3419 14 -6 120924 20492 - S< pts/0 0:01 gaim

  0 0 4534 3419 11 -5 5160 708 - R<+ pts/0 0:00 grep gaim

3637754