我是shell脚本的新手。我最近介绍了使用grep使用bash的教程。
大约5分钟前,由于我的浏览器似乎已经崩溃,因此实际应用了此功能。我想,为了练习,使用shell来查找进程,然后将其杀死。
我输入了ps -ax | grep Chrome
但左边出现了很多行数(这些是“工号”还是“流程数”?)
有没有办法杀死Chrome存在于流程名称中的所有“工作”?而不是单独杀死每一个?
答案 0 :(得分:4)
我不建议使用killall
。
你最初不应该使用-9
。
我推荐一个简单的pkill
:
pkill Chrome
答案 1 :(得分:2)
你可以使用killall:
killall Chrome
编辑:删除“-9”,因为它应该用作最后一个资源(是:killall -9 Chrome)。
答案 2 :(得分:2)
我更喜欢我的解决方案。因为它添加了一种通配符。我这样做了:
mkdir ~/.bin
echo "ps -ef | grep -i $1 | grep -v grep | awk '{print $2}' | xargs kill -9" > ~/.bin/k
echo "alias k='/Users/YOUR_USER_HERE/.bin/k $1'" >> ~/.profile
chmod +x ~/.bin/k
现在要杀掉你输入的内容:
k Chrome
或
k chrome
或
k chr
小心系统进程或不要被杀死的进程。
就像你有计算器正在运行而另一个叫Tabulator也正在运行。如果您输入
k ulator
它会杀死两者。
还要记住,这会在命令k
之后杀死与变量匹配的程序的所有实例。
因此,您可以在配置文件中创建两个别名,并在.bin中创建两个文件,一个使用命令grep -i
,另一个不使用它。没有-i标志的那个将是大小写和名称敏感的。