2017-09-11 101 views
0

在我的makefile我有一個命令如何通過awk殺死進程?

kill `ps aux | awk '/process_name/' | awk '$11 ~ /special_mask/ {print $2}'` 

它可以通過終端,但是當我嘗試通過命令來調用它make my-command返回

kill `ps aux | awk '/process_name/' | awk '1 ~ /special_mask/ {print }'` 

,沒有過程就不能執行kill ID。 我該如何解決它?

+0

您可以使用:'的ps aux | awk'/ [p] rocess_name/&& $ 11〜/ special_mask/{print $ 2}'| xargs殺死' – anubhava

+0

@anubhava它沒有幫助。也許有一種方法來檢查選擇返回不空字符串? – Jens

+1

@Jens:在'xargs'中使用'-r'標誌('GNU' specific not in'POSIX'),這意味着只有在管道之前的命令產生輸出字符串(stdout)_after_'xargs'運行命令(在你的情況下「殺死」)。 '.. | xargs -r殺死'。這樣,如果沒有找到該進程,控制檯上就不會出現錯誤(命令'kill'不運行) – Inian

回答