使用linux操做系统,不免遇到一些软件"卡壳"的问题,这时就须要使用linux下强大的kill命令来结束相关进程。这在linux系统下是极其容易的事情,你只须要kill xxx便可,这里xxx表明与此软件运行相关的进程PID号。
首先,咱们须要使用linux下另一个ps命令查找与进程相关的PID号:ps aux | grep program_filter_word
ps a 显示现行终端机下的全部程序,包括其余用户的程序。
ps -A 显示全部程序。
ps c 列出程序时,显示每一个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e 此参数的效果和指定"A"参数相同。
ps e 列出程序时,显示每一个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示全部的程序,除了执行ps指令终端机下的程序以外。
ps s 采用程序信号的格式显示程序情况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t 指定终端机编号,并列出属于该终端机的程序的情况。
ps u 以用户为主的格式来显示程序情况。
ps x 显示全部程序,不以终端机来区分。
最经常使用的方法是ps aux,而后再经过管道使用grep命令过滤查找特定的进程,而后再对特定的进程进行操做。
其次,使用kill命令结束进程:kill xxx
1)做用
kill命令用来停止一个进程。
2)格式
kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
3)参数
-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
pid:要停止进程的ID号。
Signal:表示信号。
4)说明
进程是Linux系统中一个很是重要的概念。Linux是一个多任务的操做系统,系统上常常同时运行着多个进程。咱们不关心这些进程到底是如何分配的,或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程,让它们可以很好地为用户服务。
Linux操做系统包括三种不一样类型的进程,每种进程都有本身的特色和属性。交互进程是由一个Shell启动的进程。交互进程既能够在前台运行,也能够在后台运行。批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)是Linux系统启动时启动的进程,并在后台运行。例如,httpd 是著名的Apache服务器的监控进程。
kill命令的工做原理是,向Linux系统的内核发送一个系统操做信号和某个程序的进程标识号,而后系统内核就能够对进程标识号指定的进程进行操做。好比在top命令中,咱们看到系统运行许多进程,有时就须要使用kill停止某些进程来提升系统资源。在讲解安装和登录命令时,曾提到系统多个虚拟控制台的做用是当一个程序出错形成系统死锁时,能够切换到其它虚拟控制台工做关闭这个程序。此时使用的命令就是kill,由于kill是大多数Shell内部命令能够直接调用的。
5)应用实例
(1)强行停止(常用杀掉)一个进程标识号为324的进程:
#kill -9 324
(2)解除Linux系统的死锁
在 Linux中有时会发生这样一种状况:一个程序崩溃,而且处于死锁的状态。此时通常不用从新启动计算机,只须要停止(或者说是关闭)这个有问题的程序便可。当kill处于X-Window界面时,主要的程序(除了崩溃的程序以外)通常都已经正常启动了。此时打开一个终端,在那里停止有问题的程序。好比,若是Mozilla浏览器程序出现了锁死的状况,可使用kill命令来停止全部包含有Mozolla浏览器的程序。首先用ps命令查找该程序的 PID,而后使用kill命令中止这个程序:
#kill -SIGKILL XXX
其中,XXX是包含有Mozolla浏览器的程序的进程标识号。
(3)使用命令回收内存
咱们知道内存对于系统是很是重要的,回收内存能够提升系统资源。kill命令能够及时地停止一些"越轨"的程序或很长时间没有相应的程序。例如,使用top命令发现一个无用 (Zombie) 的进程,此时可使用下面命令:
#kill -9 XXX
其中,XXX是无用的进程标识号。
而后使用下面命令:
#free
此时会发现可用内存容量增长了。
(4)killall命令
Linux下还提供了一个killall命令,能够直接使用进程的名字而不是进程标识号,例如:
# killall -HUP inetd浏览器