$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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)