web-dev-qa-db-ja.com

ディレクトリごとのプロセスのGREPとそれを殺す

/ Applications /ディレクトリから発生したプロセスをgrepしようとしていますが(それらを強制終了するため)、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
habibmustafa

パターンに空白を含めてみてください。

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

また、pkill(Linuxの長い標準製品)がOS X Mountain Lion(10.8)以降に含まれるようになりました。 http://osxdaily.com/2012/10/18/kill-process-wildcards-pkill-mac-os-x/ を参照してください

0
Joshua Huber

アンカー^(キャレット記号)を使用して、行/フィールドの開始を示し、コマンドの順序を変更します。

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

このように、grepは最後に実行され、start/Applicationsの行のみを返します。

This も役立ちます。

1
Konstantinos

CPUティックの節約に悩んでいる場合:

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