我使用过的Linux命令之killall - 杀死指定名字的进程

本文详细介绍了 Linux 下的 killall 命令,该命令能够通过进程名批量终止进程。文章覆盖了 killall 的基本用法、参数详解及实际应用场景,帮助读者快速掌握这一高效工具。

我使用过的Linux命令之killall - 杀死指定名字的进程

本文链接:http://codingstandards.iteye.com/blog/986313   (转载请注明出处)

用途说明

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

常用参数

格式:killall <command-name>

杀死指定名字的进程。实际上是向名字为<command-name>的所有进程发送SIGTERM信号,如果这些进程没有捕获这个信号,那么这些进程就会直接被干掉了。

 

格式:killall -<signame> <command-name>

格式:killall -<signum> <command-name>

发送指定的信号到名字为<command-name>的所有进程。指定的信号可以是名称<signame>,也可以是信号对应的数字<signum>。下面是常用的信号:第一列为<signame>,第二列为<signum>,第三列为信号的含义。

HUP     1    终端断线
INT       2    中断(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \)
TERM    15    终止
KILL      9    强制终止
CONT   18    继续(与STOP相反, fg/bg命令)
STOP    19    暂停(同 Ctrl + Z)

 

格式:killall -l

列出支持的信号。

 

使用示例

示例一

[root@jfht ~]# 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
[root@jfht ~]#

 

示例二

[root@jfht ~]# killall tail
[root@jfht ~]# killall tail
tail: no process killed
[root@jfht ~]#

 

示例三

这个例子展示怎样把所有的登录后的shell给杀掉,因为有些bash实际上已经没有终端相连接了。

[root@jfht ~]# w
 21:56:35 up 452 days,  5:16,  3 users,  load average: 0.05, 0.06, 0.01
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1    220.112.87.62    21:53    0.00s  0.02s  0.00s w
root     pts/9    220.112.87.62    21:53    2:44   0.02s  0.02s -bash
root     pts/10   220.112.87.62    21:53    3:13   0.01s  0.01s -bash
[root@jfht ~]# killall -9 bash
此bash也被·卡掉了,所以连接丢失了。现在重新连接并登录。


Last login: Mon Apr  4 21:53:23 2011 from 220.112.87.62
[root@jfht ~]# w
 21:56:52 up 452 days,  5:16,  1 user,  load average: 0.28, 0.10, 0.02
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1    220.112.87.62    21:56    0.00s  0.01s  0.00s w
[root@jfht ~]#

问题思考

相关资料

【1】CrazyLemon linux – killall – 以名字方式来杀死进程
http://www.crazylemon.net/linux/513.html
【2】linux爱好者 killall命令详解
http://blogold.chinaunix.net/u2/68904/showart_1805390.html
【3】中国源码网 杀死进程方法大全
http://yuanma.org/data/2007/0516/article_2600.htm

 

 

返回 我使用过的Linux命令系列总目录

 

<think>好的,我现在需要回答用户关于“killall -34”杀死进程的原因及其行为分析的问题。首先,我需要回忆一下之前用户提供的引用内容,看看是否有相关的信息。 根据引用[4],提到了kill和killall命令可以产生信号,并且提到了一些信号的处理方式,比如SIGPIPE信号默认会终止进程。另外,用户之前的问题是关于kill -15、kill -9等的区别,现在用户问的是killall -34,也就是信号编号34对应的信号是什么。 首先,我需要确认信号34在Unix/Linux系统中的定义。通常,信号1到31是标准信号,而32以上的信号在不同系统中可能不同,可能是实时信号或者是系统特定的。但根据POSIX标准,34号信号可能属于实时信号(SIGRTMIN+某个数)。不过,不同的系统可能有不同的实现,例如在Linux中,SIGRTMIN通常是从34开始的,所以SIGRTMIN对应34,SIGRTMIN+1对应35,依此类推。这些实时信号通常没有默认的终止行为,需要由应用程序自己处理。 然而,用户提到使用killall -34导致进程杀死,这可能意味着当进程接收到信号34时,如果没有捕获该信号,系统可能会采取默认行为,而默认行为可能就是终止进程。不过需要确认这一点是否正确。 根据引用[4]中的例子,用户自定义处理函数可以改变信号的行为,比如SIGINT(信号2)被捕获后,按下Ctrl+C不会终止程序。因此,如果应用程序没有为信号34注册处理函数,那么默认行为将生效。如果默认行为是终止,则进程会被杀死。 另外,需要检查系统里信号34的具体定义。例如,在Linux中,使用命令“kill -l”可以列出所有信号,可以看到34对应的信号名称。假设用户是在Linux系统下,那么信号34对应的可能是SIGRTMIN,而实时信号的默认行为通常是终止进程。 综上所述,当使用killall -34发送信号34时,如果目标进程没有为该信号设置处理程序,系统会执行默认行为,即终止进程。因此,进程杀死的原因是因为信号34的默认处理方式是终止,或者该信号未被捕获导致进程退出。 另外,用户可能需要知道如何查看信号的具体信息,或者如何捕获信号以防止进程被终止,这可以作为相关问题提出。</think>### 信号34导致进程终止的行为分析 在Unix/Linux系统中,`killall -34` 表示向进程发送 **信号34**(对应 `SIGRTMIN` 或实时信号)。其行为取决于以下两个关键因素: --- #### 1. **信号34的默认行为** -Linux中,**实时信号(34~64)的默认行为是终止进程**,除非进程主动捕获并处理该信号[^4]。 - 例如,若进程未对信号34注册自定义处理函数,系统会直接终止该进程--- #### 2. **进程是否捕获信号** - **未捕获信号**:进程直接被终止。 - **捕获信号**:可通过编程方式自定义行为(如忽略或记录日志)。 示例代码(C语言): ```c #include <signal.h> void handler(int sig) { // 自定义处理逻辑(非终止行为) } int main() { signal(34, handler); // 捕获信号34 while(1) { /* 主循环 */ } } ``` --- #### 常见场景 1. **强制终止进程** 若进程因编程错误(如死锁)无法响应常规终止信号(如`SIGTERM(15)`或`SIGINT(2)`),管理员可能使用`killall -34`强制终止进程[^2][^3]。 2. **自定义信号用途** 实时信号(如34)可用于进程间通信(如触发特定操作),但需双方约定处理逻辑[^4]。 --- #### 验证信号信息 通过命令查看信号定义: ```bash kill -l # 显示信号列表(34对应SIGRTMIN) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值