プロセスの名前からプロセスをkillするには?

2009/09/06 02:16Update
TAGS: Linux | kill | pid | プロセス | grep | egrep | awk

プロセスの名前からプロセスをkillする方法を詳しく解説します。

プロセスを終了するには、普段は「kill -9 プロセスID」を使います。

プロセス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になります。

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を使って次のように実行します。

# 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

次に、awkコマンドで【15118】を取得します。
# ps auxw | grep syboosjp | egrep -v grep | egrep -v rotatelogs2 | grep Main | awk '{print $2}'
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 - 強力なテキスト処理ツール・プログラミング言語

有关作者
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Sponsored Link


Comments