kill -9
この perl ワンライナーでを実行するにはどうすればよいですか? pid がリストされている場所にたどり着き、次のようにファイルに出力できます。
ps -ef | grep -v grep |grep /back/mysql | perl -lane '{print "kill -9 $F[1]"}'
kill -9
この perl ワンライナーでを実行するにはどうすればよいですか? pid がリストされている場所にたどり着き、次のようにファイルに出力できます。
ps -ef | grep -v grep |grep /back/mysql | perl -lane '{print "kill -9 $F[1]"}'
OK、元の回答から大幅に編集されました。
まず、簡単な答え:
ps -ef | grep -v grep |grep /back/mysql | perl -lane 'kill 9, $F[1]'
終わり。
しかしgrep | grep | perl
、それを行うにはちょっとばかげた方法です。私の最初の反応は、「なぜ Perl が必要なのですか?」です。私は通常awk | kill
、余分な入力を正当化するより複雑な問題のためにPerlを保存して、でそれを行います:
ps -ef | awk '/\/back\/mysql/ {print $2}' | xargs kill -9
(文字列 "\/back\/mysql" がパターン /\/back\/mysql/ と一致しないため、awk 自体が見つからないことに注意してください)
もちろん、awk の代わりに Perl を使用することもできます。
ps -ef | perl -lane 'print $F[1] if /\/back\/mysql/' | xargs kill -9
( awk の場合のように、プロセスが自分自身を見つけられないように、別の区切り文字の代わりに意図的に傾いたつまようじを使用しました。)
次に、質問は「なぜ perl が必要なのですか?」から切り替わります。「なぜ grep/awk/kill が必要なのですか?」に:
ps -ef | perl -lane 'kill 9, $F[1] if /\/back\/mysql/'
ps
手始めに、より適切なコマンドを使用しましょう。
ps -e -o pid,cmd --no-headers |
perl -lane'kill(KILL => $F[0]) if $F[1] eq "/back/mysql";'
もっとPerlを使わないのはなぜですか?
ps -ef | perl -ane 'kill 9,$F[1] if m{/back/mysql}'
ps -ef | grep -v grep |grep /back/mysql | perl -lane 'kill(9, $F[1])'
kill
関数は Perl で使用できます。
grep
次の 2 つのコマンドも省略できます。
ps -ef | perl -lane 'kill(9, $F[1]) if m%/back/mysql\b%'
(未テスト)