2023-04-03 Linux中杀死进程kill和killall命令的区别,着重介绍killall
Posted 海月汐辰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 根据进程名杀死进程 -kill进程名
来源:
https://www.cnblogs.com/jins-note/p/9636969.html
#pkill 进程名
#killall 进程名
的确这个两个命令都能做到这些,而且我们平时一般知道进程名需要杀死进程的时候也都是用的这两个命令。可是他叫我用kill 命令来完成这个一操作。我们知道kill 要杀死进程是需要知道进程的id的即进程号,其实这个思路就是需要通过其他命令获取相应进程的进程号,然后用kill 杀掉。
这里提供两个方法:
sudo kill -9 $(ps -ef|grep 进程名关键字|gawk \'$0 !~/grep/ {print $2}\' |tr -s \'\\n\' \' \')
sudo kill -9 $(pidof 进程名关键字)
以上是关于2023-04-03 Linux中杀死进程kill和killall命令的区别,着重介绍killall的主要内容,如果未能解决你的问题,请参考以下文章