一、kill:
终止一个进程或终止一个正在运行的程序,一般是通过kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。
另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkillmysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。
1、kill:
根据进程号杀死单个进程。对于僵尸进程,可以用kill -9 来强制终止退出。
用法:kill [信号代码] 进程ID
[root@localhost ~]#kill 4830
[root@localhost ~]#kill -9 5031
2、killall:
根据进程名称杀死程序。
用法:killall 正在运行的程序名
[root@localhostbeinan]# pgrep -l gaim
2979 gaim
[root@localhostbeinan]# killall gaim
3、pkill:
pkill和killall 应用方法差不多,也是直接杀死运行中的程序。
用法:pkill 正在运行的程序名
[root@localhostbeinan]# pgrep -l gaim
2979 gaim
[root@localhostbeinan]# pkill gaim
4、xkill:
xkill是在桌面用的杀死图形界面的程序。
二、pgrep
经常要查看进程的信息,包括进程的是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。pgrep通过匹配其程序名,找到匹配的进程。常用选项:
-l 同时显示进程名和PID
-o当匹配多个进程时,显示进程号最小的那个
-n 当匹配多个进程时,显示进程号
[root@centOS1nginx]# pgrep nginx
5289
5290
[root@centOS1nginx]# pgrep -l nginx
5289 nginx
5290 nginx
[root@centOS1nginx]# pgrep -l -o nginx
5289 nginx
[root@centOS1nginx]# pgrep -l -n nginx
5290 nginx
特别说明
1)pgrep相当于 ps –eopid,cmd | awk ‘{print $1,$2}’ | grep KeyWord
[root@master ~]# ps -eo pid,cmd | awk'{print $1,$2}' | grep init
1 init
[root@master ~]# pgrep init
1
2)如1),pgrep查找的是程序名,不包括其参数。如下,参数里包括要查找的参数,而程序名中不包括,所有没查找到。
[root@master ~]# ps axu | grep name
root 13298 0.0 0.3 5436 1000 pts/4 S 05:52 0:00 sh name.sh
root 13313 0.0 0.2 4876 672 pts/4 R+ 05:53 0:00 grep name
[root@master ~]# pgrep name
[root@master ~]#
总结
pgrep命令用来查找进程的信息,通常会和kill命令来连用,在指定条件下kill问题进程。