每天一个Linux命令(61)killall命令

    killall命令用进程的名字来杀死进程。

    (1)用法:

    用法:  killall [ -egiqvw ] [ -signal ] [进程名称]

格式:killall -<signame> <command-name>
格式:killall -<signum> <command-name>
    发送指定的信号到名字为<command-name>的所有进程。指定的信号可以是名称<signame>,也可以是信号对应的数字<signum>。
下面是常用的信号:
第一列为<signame>,第二列为<signum>,第三列为信号的含义。
HUP       1       终端断线
INT       2       中断(同 Ctrl + C)
QUIT      3       退出(同 Ctrl + \)
KILL      9       强制终止
TERM     15       终止
CONT     18       继续(与STOP相反, fg/bg命令)
STOP     19       暂停(同 Ctrl + Z

    (2)功能:

    功能:  用来结束同名的的所有进程

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

killall发送一条信号给所有运行任意指定命令的进程. 如果没有指定信号名, 则发送 SIGTERM。

    (3)选项参数:

1) -I         在发送信号给指定名称的进程时忽略大小写

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

3) -e          要求匹配进程名称(当进程名大于15个字符时有用http://os.51cto.com/art/201405/437678.htm)

4) -s         发送指定的信号

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

6) -w        等待所有杀的进程死去。killall 会每秒检查一次是否任何被杀的进程仍然存在, 仅当都死光后才返回.

               注意: 如果信号被忽略或没有起作用, 或者进程停留在僵尸状态, killall 可能会永久等待。

    (4)实例:

1)[[email protected] sunmeng]# killall -9 bash

[[email protected] sunmeng]# ps -ef |grep bash
root        826      1  0 6月26 ?       00:00:01 /bin/bash /usr/sbin/ksmtuned
sunmeng    8914   8772  0 6月26 ?       00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
sunmeng   71359  71351  0 07:10 pts/0    00:00:00 bash
root      71399  71392  0 07:10 pts/0    00:00:00 bash
root      71439  71399  0 07:10 pts/0    00:00:00 grep --color=auto bash
[[email protected] sunmeng]# killall bash      //并没有起到任何作用
[[email protected] sunmeng]# ps -ef |grep bash
root        826      1  0 6月26 ?       00:00:01 /bin/bash /usr/sbin/ksmtuned
sunmeng    8914   8772  0 6月26 ?       00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
sunmeng   71359  71351  0 07:10 pts/0    00:00:00 bash
root      71399  71392  0 07:10 pts/0    00:00:00 bash
root      71450  71399  0 07:10 pts/0    00:00:00 grep --color=auto bash

当使用killall -9 bash时将会退出root和用户的登录。

2)[[email protected] Documents]# killall -9 vi        杀死进程名为vi的所有进程

[[email protected] Documents]# vi text1.txt    

[2]+  已停止               vi text1.txt
[[email protected] Documents]# vi text2.txt

[3]+  已停止               vi text2.txt
[[email protected] Documents]# ps -ef | grep "vi"
root        784      1  0 6月26 ?       00:00:00 /usr/bin/abrt-watch-log -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detected ernel BUG at list_del corruption list_add corruption do_IRQ: stack overflow: ear stack overflow (cur: eneral protection fault nable to handle kernel ouble fault: RTNL: assertion failed eek! page_mapcount(page) went negative! adness at NETDEV WATCHDOG ysctl table check failed : nobody cared IRQ handler type mismatch Machine Check Exception: Machine check events logged divide error: bounds: coprocessor segment overrun: invalid TSS: segment not present: invalid opcode: alignment check: stack segment: fpu exception: simd exception: iret exception: /var/log/messages -- /usr/bin/abrt-dump-oops -xtD
root       1313      1  0 6月26 ?       00:00:00 /usr/sbin/libvirtd
sunmeng    9044      1  0 6月26 ?       00:00:04 /usr/libexec/goa-identity-service
sunmeng    9080      1  0 6月26 ?       00:00:00 /usr/libexec/dconf-service
root      71852  71399  0 07:21 pts/0    00:00:00 vi text1.txt
root      71856  71399  0 07:21 pts/0    00:00:00 vi text2.txt
root      71861  71399  0 07:21 pts/0    00:00:00 grep --color=auto vi
[[email protected] Documents]# ps -ef |grep "text"      //根据text能找着名字为vi的进程
root      71852  71399  0 07:21 pts/0    00:00:00 vi text1.txt
root      71856  71399  0 07:21 pts/0    00:00:00 vi text2.txt
root      71868  71399  0 07:22 pts/0    00:00:00 grep --color=auto text
[[email protected] Documents]# killall text        //但并不能通过它来删除进程     
text: no process found
[[email protected] Documents]# killall vi        //还是不起效果
[[email protected] Documents]# ps -ef | grep "vi"
root        784      1  0 6月26 ?       00:00:00 /usr/bin/abrt-watch-log -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detected ernel BUG at list_del corruption list_add corruption do_IRQ: stack overflow: ear stack overflow (cur: eneral protection fault nable to handle kernel ouble fault: RTNL: assertion failed eek! page_mapcount(page) went negative! adness at NETDEV WATCHDOG ysctl table check failed : nobody cared IRQ handler type mismatch Machine Check Exception: Machine check events logged divide error: bounds: coprocessor segment overrun: invalid TSS: segment not present: invalid opcode: alignment check: stack segment: fpu exception: simd exception: iret exception: /var/log/messages -- /usr/bin/abrt-dump-oops -xtD
root       1313      1  0 6月26 ?       00:00:00 /usr/sbin/libvirtd
sunmeng    9044      1  0 6月26 ?       00:00:04 /usr/libexec/goa-identity-service
sunmeng    9080      1  0 6月26 ?       00:00:00 /usr/libexec/dconf-service
root      71852  71399  0 07:21 pts/0    00:00:00 vi text1.txt
root      71856  71399  0 07:21 pts/0    00:00:00 vi text2.txt
root      71920  71399  0 07:23 pts/0    00:00:00 grep --color=auto vi
[[email protected] Documents]# killall -9 vi      //经过测试,只有加上-9才会起作用
[2]-  已杀死               vi text1.txt
[3]+  已杀死               vi text2.txt

3)[[email protected] Documents]# killall -l      打印所有已知信号列表

[[email protected] Documents]# killall -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED
[[email protected] Documents]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT          4) SIGILL       5) SIGTRAP
 6) SIGABRT       7) SIGBUS       8) SIGFPE          9) SIGKILL      10) SIGUSR1
11) SIGSEGV       12) SIGUSR2      13) SIGPIPE        14) SIGALRM      15) SIGTERM
16) SIGSTKFLT     17) SIGCHLD      18) SIGCONT        19) SIGSTOP      20) SIGTSTP
21) SIGTTIN       22) SIGTTOU       23) SIGURG         24) SIGXCPU      25) SIGXFSZ
26) SIGVTALRM     27) SIGPROF       28) SIGWINCH       29) SIGIO        30) SIGPWR
31) SIGSYS        34) SIGRTMIN      35) SIGRTMIN+1     36) SIGRTMIN+2   37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6     41) SIGRTMIN+7   42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10   45) SIGRTMIN+11    46) SIGRTMIN+12  47) SIGRTMIN+13
48) SIGRTMIN+14   49) SIGRTMIN+15   50) SIGRTMAX-14    51) SIGRTMAX-13  52) SIGRTMAX-12
53) SIGRTMAX-11   54) SIGRTMAX-10   55) SIGRTMAX-9     56) SIGRTMAX-8   57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4     61) SIGRTMAX-3   62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX    

4)[[email protected] Documents]# killall -s TERM vi      发送指定的信号给指定名称的进程

[[email protected] Documents]# killall -s TERM vi
[[email protected] Documents]# ps -ef | grep vi
root        784      1  0 6月26 ?       00:00:00 /usr/bin/abrt-watch-log -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detected ernel BUG at list_del corruption list_add corruption do_IRQ: stack overflow: ear stack overflow (cur: eneral protection fault nable to handle kernel ouble fault: RTNL: assertion failed eek! page_mapcount(page) went negative! adness at NETDEV WATCHDOG ysctl table check failed : nobody cared IRQ handler type mismatch Machine Check Exception: Machine check events logged divide error: bounds: coprocessor segment overrun: invalid TSS: segment not present: invalid opcode: alignment check: stack segment: fpu exception: simd exception: iret exception: /var/log/messages -- /usr/bin/abrt-dump-oops -xtD
root       1313      1  0 6月26 ?       00:00:00 /usr/sbin/libvirtd
sunmeng    9044      1  0 6月26 ?       00:00:04 /usr/libexec/goa-identity-service
sunmeng    9080      1  0 6月26 ?       00:00:00 /usr/libexec/dconf-service
root      72199  71399  0 07:27 pts/0    00:00:00 vi text1.txt
root      72768  71399  0 07:49 pts/0    00:00:00 vi text1.txt
root      72773  71399  0 07:49 pts/0    00:00:00 vi text2.txt
root      72902  71399  0 07:52 pts/0    00:00:00 grep --color=auto vi
[[email protected] Documents]# killall TERM vi
TERM: no process found
[[email protected] Documents]# killall -s KILL vi
[3]-  已杀死               vi text1.txt
[4]+  已杀死               vi text2.txt
[2]+  已杀死               vi text1.txt

5)[[email protected] Documents]# killall -w -s 9 ping      发送信号给指定进程,等待它被杀死

[[email protected] Documents]# ps -ef | grep "ping"
root      73631  71399  0 08:13 pts/0    00:00:00 ping 192.168.0.18
root      73649  71399  0 08:13 pts/0    00:00:00 ping -b 192.168.0.18
root      73703  71399  0 08:16 pts/0    00:00:00 grep --color=auto ping
[[email protected] Documents]# killall -w -s -9 ping
-9: 未知的信号; killall -l 显示信号列表。
[[email protected] Documents]# killall -w -s 9 ping
[6]-  已杀死               ping 192.168.0.18
[7]+  已杀死               ping -b 192.168.0.18
[[email protected] Documents]# ps -ef | grep "ping"
root      73736  71399  0 08:16 pts/0    00:00:00 grep --color=auto ping

6)[[email protected] Documents]# killall -help

[[email protected] Documents]# killall -help
Usage: killall [-Z 上下文] [-u 用户名] [ -eIgiqrvw ] [ -信号 ] 程序名...
       killall -l, --list
       killall -V, --version

  -e,--exact          require exact match for very long names
  -I,--ignore-case    case insensitive process name match
  -g,--process-group  kill process group instead of process
  -y,--younger-than   kill processes younger than TIME
  -o,--older-than     kill processes older than TIME
  -i,--interactive    ask for confirmation before killing
  -l,--list           list all known signal names
  -q,--quiet          don‘t print complaints
  -r,--regexp         interpret NAME as an extended regular expression
  -s,--signal SIGNAL  send this signal instead of SIGTERM     //
  -u,--user USER      kill only process(es) running as USER
  -v,--verbose        report if the signal was successfully sent
  -V,--version        display version information
  -w,--wait           wait for processes to die
  -Z,--context 正则表达式 仅杀死含有指定上下文的进程
                          (必须在其他参数前使用)
时间: 2025-01-16 23:57:33

每天一个Linux命令(61)killall命令的相关文章

killall命令--Linux命令应用大词典729个命令解读

内容来源于人民邮电出版社<Linux命令应用大词典> 讲述729个命令,1935个例子 学习Linux系统的参考书.案头书,遇到不懂的命令或命令选项一查即可 争取每天都发布内容 本文出自 "airfish2000" 博客,更多命令查看博客: http://airfish2000.blog.51cto.com/10829608/1887968 killall命令 使用killall命令可以用于杀死指定进程名称的进程. 命令语法: killall[选项] [进程名] 命令中各选

【转】每天一个linux命令(43):killall命令

原文网址:http://www.cnblogs.com/peida/archive/2012/12/21/2827366.html Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令. 1.命令格式: killall[参数][进程名] 2.命令功能:

每天一个linux命令(35):killall命令

Linux 系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进 程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命 令. 1.命令格式: killall[参数][进程名] 2.命令功能: 用来结束同名的的所有进程 3.命令参数: -Z 只杀死拥有scontext 的进程 -e 要求匹配进程名称 -I 忽略小写

【转】每天一个linux命令(25):linux文件属性详解

原文网址:http://www.cnblogs.com/peida/archive/2012/11/23/2783762.html Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [[email protected] test]# ls -lih 总计 316K 2095120 lrwxrwxrwx 1 root root   11 11-22 06:58 link

【转】每天一个linux命令(42):kill命令

原文网址:http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程.kill命令是通过向进程发送指定的信

linux命令--kill命令&killall命令

kill命令用来终止指定进程的运行. 发送指定的信号到相应进程.不指定型号将发送SIGTERM(15)终止指定进程.如果任无法终止该程序可用"-KILL" 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号.root用户将影响用户的进程,非root用户只能影响自己的进程. 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略. 下面是常用的信号: HUP    1    终端断线 INT     2    

每天一个 Linux 命令(20):find命令之exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {}   花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中只允许-ex

每天一个linux命令(42):kill命令

Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程.kill命令是通过向进程发送指定的信号来结束相应进程的.在默认情况下,采用编号为15的TERM信号.TERM信号将终止所有不能捕获该信号的进程.对于那些可以捕获该信号的

每天一个Linux命令(58)sudo命令

    sudo命令用来以其他身份来执行命令,预设的身份为root.     (1)用法:     用法:  sudo  [参数]  [命令]     (2)功能:     功能:  sudo可以针对单个命令授予临时权限.用户也可以通过su切换到root用户运行命令,su启动一个root shell允许用户运行之后的所有的命令. 1)sudo与su的不同之处:sudo仅在需要时授予用户权限,减少了用户因为错误执行命令损坏系统的可能性:sudo也可以用来以其他用户身份执行命令.此外,sudo可以记