linux批量删除进程

linux批量删除进程,第1张

方法一:

$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”会强行杀掉指定进程。

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

方法二:

pgrep和pidof两个命令一串!

$ pgrep firefox | xargs kill -s 9

方法三:

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

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

方法四:

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

$kill -s 9 `pgrep firefox`

方法五——pkill:

$pkill -9 firefox

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

方法六——killall :

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

$killall -9 firefox

进程被强制杀死 其实是我们在shell终端发送信号比如Ctr+c是终端信号SIGINT,还有很多别的信号,你可以网上去搜搜。

所以这个问题是关于信号捕捉的,当进程接收到这些信号时,默认的信号处理函数调用,会强制终止进程。要解决这个问题就是要注册一个用户的信号处理函数,请搜索signal(signum,sigHandler)这个函数,当调用这个函数后,当你收到强制终止的信号signum,则sighandler会被调用,你可以在sighandler()里面删除临时文件,然后终止进程。

信号和信号处理程序是在应用程序级别的,你应该会很快了解学会,不是很难,但是对你解决这个问题会有很大帮助,并且可以帮你认识到所谓的强制杀死进程的内幕 - under the hood


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8323538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存