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

另外应用的场合就是在服务器管理中,在不涉及数据库服务器程式的父进程的停止运行,也能用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因非常简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql

服务器最佳是按其正常的程式关闭,而不是用pkill mysqld 或killall mysqld这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。

1、kill

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

kill 的用法:

kill [信号代码]进程ID

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

例如:

[vivian@localhost vivian]$ ps -auxf | grep httpd

vivian 27005 0.0 0.0 4928 680 pts/0 S 09:42 0:00 | \_ grep httpd

root 1742 0.0 0.0 19588 560 ? S Nov24 0:00 /var/email/apache/bin/httpd -k start

nobody 1744 0.0 0.0 11304 540 ? S Nov24 0:03 \_ /var/email/apache/bin/httpd -k start

nobody 23055 0.0 2.3 327748 24232 ? S Nov26 1:43 \_ /var/email/apache/bin/httpd -k start

nobody 23087 0.0 2.4 328252 24832 ? S Nov26 1:38 \_ /var/email/apache/bin/httpd -k start

nobody 10607 0.0 2.3 327144 24064 ? S Nov27 1:12 \_ /var/email/apache/bin/httpd -k start