2023-04-03 Linux中杀死进程kill和killall命令的区别,着重介绍killall

一、Linux killall 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程。kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操作,更加方便。

二、kill的命令格式

kill [信号代码] 进程ID

三、killall 命令可以说是增强版kill,只需要指定主进程名称即可,killall 进程名称,它会帮你将所有相关的进程关闭(只要包含进程名称的进程),该命令优势十分明显,大大简化了操作。

killall [选项] [信号代码] 进程名称
参数说明:

name : 进程名
选项包含如下几个参数:
-e | --exact : 进程需要和名字完全相符
-I | --ignore-case :忽略大小写
-g | --process-group :结束进程组
-i | --interactive :结束之前询问
-l | --list :列出所有的信号名称
-q | --quite :进程没有结束时,不输出任何信息
-r | --regexp :将进程名模式解释为扩展的正则表达式。
-s | --signal :发送指定信号
-u | --user :结束指定用户的进程
-v | --verbose :显示详细执行过程
-w | --wait :等待所有的进程都结束
-V |--version :显示版本信息
--help :显示帮助信息

四、-l | --list :列出所有的信号名称,下面一个是arm,一个是ubuntu 

四、常用的信号 ,kill -15与kill -9
       当我们使用kill pid时,实际相当于kill -15 pid。也就是说默认信号为15。使用kill -15时,系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该信号后,具体要如何处理自己可以决定。

这时候,应用程序可以选择:

1、立即停止程序
2、释放响应资源后停止程序
3、忽略该信号,继续执行程序
因为kill -15信号只是通知对应的进程要进行"安全、干净的退出",程序接到信号之后,退出前一般会进行一些"准备工作",如资源释放、临时文件清理等等,如果准备工作做完了,再进行程序的终止。但是,如果在"准备工作"进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略该终止信号。这也就是为什么我们有的时候使用kill命令是没办法"杀死"应用的原因,因为默认的kill信号是SIGTERM(15),而SIGTERM(15)的信号是可以被阻塞和忽略的。

和kill -15相比,kill -9就相对强硬得多,系统会发出SIGKILL信号,他要求接收到该信号的程序应该立即结束运行,不能被阻塞或者忽略。

所以,kill -9在执行时,应用程序是没有时间进行"准备工作"的,所以这通常会带来一些副作用,数据丢失或者终端无法恢复到正常状态等。

五、实际的应用,脚本里面

 sh脚本内容

#!/bin/sh
while true
do
/usr/bin/xxxcap
sleep 2
done

六,用kill 和killall命令删除的区别如下

七、参考文章

Linux kill,killall和killall5_晚风_END的博客-CSDN博客

进程管理:kill 命令之 -9 与 -15 - 腾讯云开发者社区-腾讯云

Linux killall 命令 | 菜鸟教程

猜你喜欢

转载自blog.csdn.net/qq_37858386/article/details/129923769
今日推荐