一、killall使用方法(结束大多数进程)

参考:http://www..com/peida/archive/2012/12/21/2827366.html

Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。

1.命令格式:

killall[参数][进程名]

2.命令功能:

用来结束同名的的所有进程

3.命令参数:

-Z 只杀死拥有scontext 的进程

-e 要求匹配进程名称

-I 忽略小写

-g 杀死进程组而不是进程

-i 交互模式,杀死进程前先询问用户

-l 列出所有的已知信号名称

-q 不输出警告信息

-s 发送指定的信号

-v 报告信号是否成功发送

-w 等待进程死亡

--help 显示帮助信息

--version 显示版本显示

4.使用实例:

实例1:杀死所有同名进程

命令:

killall vi

输出:

[root@localhost ~]# ps -ef|grep vi

root     17581 17398  0 17:51 pts/0    00:00:00 vi test.txt

root     17611 17582  0 17:51 pts/1    00:00:00 grep vi

[root@localhost ~]# ps -ef|grep vi

root     17581 17398  0 17:51 pts/0    00:00:00 vi test.txt

root     17640 17612  0 17:51 pts/2    00:00:00 vi test.log

root     17642 17582  0 17:51 pts/1    00:00:00 grep vi

[root@localhost ~]# killall vi

[root@localhost ~]# ps -ef|grep vi

root     17645 17582  0 17:52 pts/1    00:00:00 grep vi

实例2:向进程发送指定信号

命令

后台运行程序:vi &

杀死 vi进程:killall -TERM vi  或者  killall -KILL vi

输出

[root@localhost ~]# vi &

[1] 17646[root@localhost ~]# killall -TERM vi

[1]+  Stopped                 vi

[root@localhost ~]# vi &

[2] 17648[root@localhost ~]# ps -ef|grep vi

root     17646 17582  0 17:54 pts/1    00:00:00 vi

root     17648 17582  0 17:54 pts/1    00:00:00 vi

root     17650 17582  0 17:55 pts/1    00:00:00 grep vi

[2]+  Stopped                 vi

[root@localhost ~]# killall -TERM vi

[root@localhost ~]# ps -ef|grep vi

root     17646 17582  0 17:54 pts/1    00:00:00 vi

root     17648 17582  0 17:54 pts/1    00:00:00 vi

root     17653 17582  0 17:55 pts/1    00:00:00 grep vi

[root@localhost ~]# killall -KILL vi

[1]-  已杀死               vi

[2]+  已杀死               vi

[root@localhost ~]# ps -ef|grep vi

root     17656 17582  0 17:56 pts/1    00:00:00 grep vi

[root@localhost ~]#

实例3:把所有的登录后的shell给杀掉

命令:

killall -9 bash

输出:

说明:

运行命令:killall -9 bash 后,所有bash都会被卡掉了,但是使用过程中发现有些进程没有关闭掉,终端还有窗口没有关闭掉,因此使用kill命令关闭特定进程,方法如下

二、kill使用方法(结束特定进程)

参考:http://blog..net/andy572633/article/details/7211546

常规篇:

首先,用ps查看进程,方法如下:

$ ps -ef

……

smx       1822     1  0 11:38 ?        00:00:49 gnome-terminal

smx       1823  1822  0 11:38 ?        00:00:00 gnome-pty-helper

smx       1824  1822  0 11:38 pts/0    00:00:02 bash

smx       1827     1  4 11:38 ?        00:26:28 /usr/lib/firefox-3.6.18/firefox-bin

smx       1857  1822  0 11:38 pts/1    00:00:00 bash

smx       1880  1619  0 11:38 ?        00:00:00 update-notifier

……

smx      11946  1824  0 21:41 pts/0    00:00:00 ps -ef

或者:

$ ps -aux

……

smx       1822  0.1  0.8  58484 18152 ?        Sl   11:38   0:49 gnome-terminal

smx       1823  0.0  0.0   1988   712 ?        S    11:38   0:00 gnome-pty-helper

smx       1824  0.0  0.1   6820  3776 pts/0    Ss   11:38   0:02 bash

smx       1827  4.3  5.8 398196 119568 ?       Sl   11:38  26:13 /usr/lib/firefox-3.6.18/firefox-bin

smx       1857  0.0  0.1   6688  3644 pts/1    Ss   11:38   0:00 bash

smx       1880  0.0  0.6  41536 12620 ?        S    11:38   0:00 update-notifier

……

smx      11953  0.0  0.0   2716  1064 pts/0    R+   21:42   0:00 ps -aux

此时如果我想杀了火狐的进程就在终端输入:

$ kill -s 9 1827

其中-s 9 制定了传递给进程的信号是9,即强制、尽快终止进程。各个终止信号及其作用见附录。

1827则是上面ps查到的火狐的PID。

简单吧,但有个问题,进程少了则无所谓,进程多了,就会觉得痛苦了,无论是ps -ef 还是ps -aux,每次都要在一大串进程信息里面查找到要杀的进程,看的眼都花了。

进阶篇:

改进1:

把ps的查询结果通过管道给grep查找包含特定字符串的进程。管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。

$ ps -ef | grep firefox

smx       1827     1  4 11:38 ?        00:27:33 /usr/lib/firefox-3.6.18/firefox-bin

smx      12029  1824  0 21:54 pts/0    00:00:00 grep --color=auto firefox

这次就清爽了。然后就是

$kill -s 9 1827

还是嫌打字多?

改进2——使用pgrep:

一看到pgrep首先会想到什么?没错,grep!pgrep的p表明了这个命令是专门用于进程查询的grep。

$ pgrep firefox

1827

看到了什么?没错火狐的PID,接下来又要打字了:

$kill -s 9 1827

改进3——使用pidof:

看到pidof想到啥?没错pid of xx,字面翻译过来就是 xx的PID。

$ pidof firefox-bin

1827

和pgrep相比稍显不足的是,pidof必须给出进程的全名。然后就是老生常谈:

$kill -s 9 1827

无论使用ps 然后慢慢查找进程PID 还是用grep查找包含相应字符串的进程,亦或者用pgrep直接查找包含相应字符串的进程PID,然后手动输入给kill杀掉,都稍显麻烦。有没有更方便的方法?有!

改进4:

$ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9

说明:

“grep firefox”的输出结果是,所有含有关键字“firefox”的进程。

“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。

“cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

“xargs kill -s 9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。

难道你不想抱怨点什么?没错太长了

改进5:

知道pgrep和pidof两个命令,干嘛还要打那么长一串!

$ pgrep firefox | xargs kill -s 9

改进6:

$ ps -ef | grep firefox | awk '{print $2}' | xargs kill -9

kill: No such process

有一个比较郁闷的地方,进程已经正确找到并且终止了,但是执行完却提示找不到进程。

其中awk '{print $2}' 的作用就是打印(print)出第二列的内容。根据常规篇,可以知道ps输出的第二列正好是PID。就把进程相应的PID通过xargs传递给kill作参数,杀掉对应的进程。

改进7:

难道每次都要调用xargs把PID传递给kill?答案是否定的:

$kill -s 9 `ps -aux | grep firefox | awk '{print $2}'`

改进8:

没错,命令依然有点长,换成pgrep。

$kill -s 9 `pgrep firefox`

改进9——pkill:

看到pkill想到了什么?没错pgrep和kill!pkill=pgrep+kill。

$pkill -9 firefox

说明:"-9" 即发送的信号是9,pkill与kill在这点的差别是:pkill无须 “s”,终止信号等级直接跟在 “-“ 后面。之前我一直以为是 "-s 9",结果每次运行都无法终止进程。

改进10——killall:

killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。

$killall -9 firefox

参考以上博文的基础上,在python脚本文件中,添加两行语句

commands.getstatusoutput('gnome-terminal -t "clear1" -x bash -c "ps -ef | grep rplidar_amcl_demo.launch | cut -c 9-15 | xargs kill -s 9 ; exec bash"; sleep 5 ' )

commands.getstatusoutput('gnome-terminal -t "clear2" -x killall -9 bash' )

第一条加了延时是为了使进程有足够的时间关闭;

如果有多条执行语句,在gnome-terminal中要加双引号,如果只有一条的话可以直接执行,不用加引号

linux杀死vi进程,Linux下关闭所有终端的方法(killall和kill大全)相关推荐

  1. linux 识别僵尸进程,Linux上寻找并杀死僵尸进程

    转载: http://blog.csdn.net/shanzhizi/article/details/47320595 linux服务器上,多少会出现一些僵尸进程,下面介绍如何快速寻找和消灭这些僵尸进 ...

  2. linux杀死僵尸进程

    linux杀死僵尸进程 输入ps查看所有进程的pid 输入kill -9 pid杀死目标进程

  3. XPE下关闭自动播放功能的方法

    禁用Windows XP的自动播放功能 现在很多光盘都具有自动播放功能,只要我们把光盘放入光驱后即会自动运行,这个功能我们有时是不需要的,尤其是在Windows XP操作系统中,在默认情况下,一旦插入 ...

  4. linux下杀死全部进程,linux下批量杀死进程

    ps aux|grep python|grep -v grep|cut -c 9-15|xargs kill -15 管道符"|"用来隔开两个命令,管道符左边命令的输出会作为管道符 ...

  5. linux 检查僵死进程,Linux下杀僵尸进程办法

    Linux认证辅导:Linux下杀僵尸进程办法 为了方便广大考生更好的复习,小编编辑整理提供了Linux认证:Linux下杀僵尸进程办法,以供各位考生考试复习参考,希望对考生复习有所帮助. 1) 检查 ...

  6. linux上怎么杀死僵尸进程,Linux入门知识:杀死僵尸进程

    Linux并不把进程的树形结构导出给普通用户,然而在内核中,它却使用树形结构来管理进程.linux内核使用"子进程退出,父进程收尸,父进程退出,子进程被过继"这种方式来管理进程的死 ...

  7. linux中杀死指定进程,Linux中通过 kill命令 杀死指定进程

    一  杀死指定进程 现知道有一个curl线程正在运行,需要杀死 anggang@barry$ curl -y 30 -Y 1 -m 300 -x 8.8.8.8:808 -o html_baidu h ...

  8. linux服务器杀进程,linux杀死进程命令

    进程ID 注:信号代码可以省略:我们常用的信号代码是 -9 ,表示强制终止: 举例: [root@localhost ~]# ps auxf |grep httpd root 4939 0.0 0.0 ...

  9. linux服务器杀进程,linux杀死进程命令[通俗易懂]

    进程ID 注:信号代码可以省略:我们常用的信号代码是 -9 ,表示强制终止: 举例: [root@localhost ~]# ps auxf |grep httpd root 4939 0.0 0.0 ...

最新文章

  1. spring boot初学习的数据库依赖
  2. Windows Server 排错和发帖求助必读
  3. Ambari安装之部署3个节点的HA分布式集群
  4. 解决Tomcat文件上传超时问题.
  5. 10个Github热门Python库,非常实用!
  6. 数字图像处理-1.图像获取
  7. 金九银十正确打开方式!快手三面面试真题
  8. (Access denied for user 'root'@'localhost' (using password: NO))
  9. 直接双击启动tomcat中的startup.bat闪退原因及解决方法
  10. 学术论文写作的 paper、code 资源
  11. Dockerfile 数据卷最佳实践
  12. centos php mbstring.so,CentOS安装php mbstring的扩展
  13. java 解析xml saxreader_Java中使用DOM和SAX解析XML文件的方法示例
  14. 软件配置管理计划示例
  15. Mathematica处理高斯光束的分布图像
  16. 【ubuntu如何录制gif图】
  17. 显卡功耗测试用什么软件,跑什么测试显卡功耗最高:这20个项目能给你答案
  18. 3点画矩形的lisp_AutoCAD LISP矩形窗格绘制
  19. 【一】情感对话 Towards Emotional Support Dialog Systems 论文阅读
  20. 张驰课堂:六西格玛黑带认证的含金量由谁决定?

热门文章

  1. PostgreSQL pg_hba.conf 文件简析
  2. 从一个真实案例看性能差异问题处理方法论
  3. 链家大数据多维分析引擎实践
  4. IoT平台如何实现业务配置中心
  5. 初探语音识别ASR算法
  6. 边缘计算是流行词还是风口?开发者怎样选开源项目?
  7. 实战解读丨Linux下实现高并发socket最大连接数的配置方法
  8. 云上安全工作乱如麻,等保2.0来一下
  9. 【华为云技术分享】基于小熊派开发板的智慧路灯开发版本更新
  10. 昇腾AI处理器软件栈--神经网络软件架构