按目录查找进程的 GREP 并将其杀死

按目录查找进程的 GREP 并将其杀死

我正在尝试grep针对源自 /Applications/ 目录的进程(以杀死它们),但我的grep命令也不断捕获一些错误的进程。我在这里做错了什么?

$ ps -ef | grep -e '/Applications/' | grep -v grep | awk '{print $8}'
/Library/Application        I DON'T WANT THIS
/Library/Application        I DON'T WANT THIS
/Applications/Firefox.app/Contents/MacOS/firefox
/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
/Applications/Notes.app/Contents/MacOS/Notes

答案1

使用锚点^(插入符号)来表示行/字段的开头并更改命令顺序:

 ps -ef | grep -v grep | awk '{print $8}' | grep "^/Applications"

这样,grep 将最后运行,并且只返回以下行:开始/Applications

也很有帮助。

答案2

如果您正在为节省 CPU 时钟周期而烦恼:

ps -ef | awk '$8~"^/Applications/"{print $8}'

答案3

尝试在您的模式中包含空格:

...  grep -e ' /Applications/'  ...

此外,pkill(长期以来一直是 Linux 中的标准产品)现在包含在 OS X Mountain Lion (10.8) 及更高版本中。看http://osxdaily.com/2012/10/18/kill-process-wildcards-pkill-mac-os-x/

相关内容