プロセスの名前からプロセスをkillするには?
2009/09/06 02:16Update
プロセスの名前からプロセスをkillする方法を詳しく解説します。
プロセスを終了するには、普段は「kill -9 プロセスID」を使います。
プロセスID(PID)を調べるには
例えば、
httpdというプロセス名のID(PID)を調べたい場合、以下のようにコマンドを実行します。
で、PIDではなく、プロセス名前からプロセスを直接killしたい場合があります。
以下はそのやり方です。
例えば、
syboosjpというプロセスをkillしたいとします。
1)まず、syboosjpという名前のプロセスのPIDを取得する
まずは、
次に、awkコマンドで【15118】を取得します。
■解説:
ps auxwの出力結果に複数の行がある場合、grep やegrepコマンドを使って、特定な行だけを取得することができます。
1)grepはフィルタコマンドで、「grep syboosjp」というのは、「ps auxw」の出力に「syboosjp」というテキストが含まれる行だけを取得します。
「egrep -v テキスト」コマンドは前のコマンドの出力に指定する「テキスト」が含まれていない行を取得します。
複数のgrepとegrep -v、及びawkコマンドの組み合わせで、最後に出力結果はkillしたいPID一つになればOKです。
ここまでは、プロセス名からPIDの取得が出来上がります。
2)kill -9 でプロセスをkillする
AWK - 強力なテキスト処理ツール・プログラミング言語
プロセスID(PID)を調べるには
ps -fe|grep プロセス名
でできます。例えば、
httpdというプロセス名のID(PID)を調べたい場合、以下のようにコマンドを実行します。
# ps -fe|grep httpd
root 4485 1 0 Sep05 ? 00:00:00 /usr/sbin/httpd ..
root 9341 7713 0 01:28 pts/1 00:00:00 grep httpd
httpdのPIDは4485になります。root 4485 1 0 Sep05 ? 00:00:00 /usr/sbin/httpd ..
root 9341 7713 0 01:28 pts/1 00:00:00 grep httpd
kill -9 プロセスID
でプロセスを終了することができます。kill -9 4485
でhttpdを終了させます。で、PIDではなく、プロセス名前からプロセスを直接killしたい場合があります。
プロセスの名前からプロセスをkillする
以下はそのやり方です。
例えば、
syboosjpというプロセスをkillしたいとします。
1)まず、syboosjpという名前のプロセスのPIDを取得する
まずは、
ps auxw | grep syboosjp
実行します。# ps auxw | grep syboosjp
root 4488 0.0 0.0 43192 1744 ? S Sep05 0:00 /usr/sbin/rotatelogs2
root 4489 0.0 0.0 43192 1832 ? S Sep05 0:00 /usr/sbin/rotatelogs2
root 5095 0.0 0.0 13468 1604 ? S Sep05 0:00 /bin/sh ./run.sh -c syboosjp
root 15118 23.9 4.0 1229416 334312 ? Sl Sep05 29:53 org.xx.Main -c syboosjp
root 10912 0.0 0.0 4100 708 pts/1 R+ 02:00 0:00 grep syboosjp
syboosjp本当のPIDの15118を取得したいと思いますので、grep と egrepを使って次のように実行します。root 4488 0.0 0.0 43192 1744 ? S Sep05 0:00 /usr/sbin/rotatelogs2
root 4489 0.0 0.0 43192 1832 ? S Sep05 0:00 /usr/sbin/rotatelogs2
root 5095 0.0 0.0 13468 1604 ? S Sep05 0:00 /bin/sh ./run.sh -c syboosjp
root 15118 23.9 4.0 1229416 334312 ? Sl Sep05 29:53 org.xx.Main -c syboosjp
root 10912 0.0 0.0 4100 708 pts/1 R+ 02:00 0:00 grep syboosjp
# ps auxw | grep syboosjp | egrep -v grep | egrep -v rotatelogs2 | grep Main
root 15118 23.9 4.0 1229416 334312 ? Sl Sep05 29:53 org.xx.Main -c syboosjp
root 15118 23.9 4.0 1229416 334312 ? Sl Sep05 29:53 org.xx.Main -c syboosjp
次に、awkコマンドで【15118】を取得します。
# ps auxw | grep syboosjp | egrep -v grep | egrep -v rotatelogs2 | grep Main | awk '{print $2}'
15118
15118の取得ができました。15118
■解説:
ps auxwの出力結果に複数の行がある場合、grep やegrepコマンドを使って、特定な行だけを取得することができます。
1)grepはフィルタコマンドで、「grep syboosjp」というのは、「ps auxw」の出力に「syboosjp」というテキストが含まれる行だけを取得します。
「egrep -v テキスト」コマンドは前のコマンドの出力に指定する「テキスト」が含まれていない行を取得します。
複数のgrepとegrep -v、及びawkコマンドの組み合わせで、最後に出力結果はkillしたいPID一つになればOKです。
ここまでは、プロセス名からPIDの取得が出来上がります。
2)kill -9 でプロセスをkillする
kill -9 `ps auxw | grep syboosjp | egrep -v grep | egrep -v rotatelogs2 | grep Main | awk '{print $2}'`
参考資料
AWK - 強力なテキスト処理ツール・プログラミング言語
Sponsored Link
- Relative Articles
- RPMパッケージから Linuxドライバーのインストール - (2009/06/13 23:36)
- SuSE YaSTで利用する言語の設定および変更 - (2011/03/18 07:43)
- AWK - 強力なテキスト処理ツール・プログラミング言語 - (2009/06/10 15:16)
- shutdown - システム シャットダウン・再起動 - (2009/06/10 15:53)
- Linuxシェル(Shell)の作成と実行 - (2009/06/10 16:14)
- LinuxでUSBメモリを使う - (2009/06/13 15:33)
- viコマンドを使おう - これだけを覚えておけば - (2009/06/13 20:58)
- uname - Linuxカーネル 確認 - (2009/06/13 23:48)
- df / du コマンド - ハードディスクの使用状況・ファイル/フォルダサイズ表示 - (2009/06/15 14:56)
- tailコマンド活用 - ログ出力をリアルタイムに追跡 - (2009/06/15 15:31)