特定のチェーンに一致するすべてのプロセスを終了したいと思います。うまく機能するスクリプトは次のとおりです。
echo `ps aux | grep verySpecificChain | grep -v grep | /usr/bin/awk '{ print $2 }'` | xargs kill
「su -c」を介して他のユーザーからこのスクリプトを実行したいと思います。
echo password | su -c "echo `ps aux | grep verySpecificChain | grep -v grep | /usr/bin/awk '{ print $2 }'` | xargs kill" userName;
私の問題は、複数のgrep verySpecificChain
プロセスを一致させるときに最初の要素だけが次に渡されることですxargs kill
。
30598 ==> killed
bash: line 1: 30599: command not found ==> Not killed
bash: line 2: 30600: command not found ==> Not killed
bash: line 3: 30606: command not found ==> Not killed
su -c
コマンドの有無にかかわらず、動作が変わる理由を本当に知りたいです。
私はFedora 20、バージョン4.2.53(1)-リリース(x86_64-redhat-linux-gnu)でGNU bashを実行しています。
ベストアンサー1
ただpkill -f verySpecificChain