system management
1752767 メンバー
5310 オンライン
108789 解決策
新規ポスト

ps -ef | grep XXX で表示されたプロセスのみをkillする

 
cube
アドバイザー

ps -ef | grep XXX で表示されたプロセスのみをkillする

フォーラム参加者様 お世話になっております。

例として、hoge プロセスが稼働しているServerに ps -ef | grep hoge を入力すると、hogeのプロセスIDが表示されると思います。

hoge は手動/自動で起動することは出来るのですが、停止する場合は毎回プロセスIDを確認して kill -9 XXX を手入力して停止しております。

プログラムは強制的に落としても何ら問題は内のですが、プロセスIDは毎回異なるために、自動で落とすShell Programが作成できません。

タイトルで入力させていただいた通り、killしたいプログラムを引っ張ってきてそのプロセスIDだけをkillすることは可能なのでしょうか。

ご存じの方いらっしゃいましたら、ご教授の程よろしくお願いします。
8件の返信8
ROOT
アドバイザー

ps -ef | grep XXX で表示されたプロセスのみをkillする

kill -9 `ps -ef | grep "XXXX" |grep -v "grep" |awk '{print $2}'`

でできると思います。
cube
アドバイザー

ps -ef | grep XXX で表示されたプロセスのみをkillする

早速のご返信ありがとうございます。

教えていただいた例を入力するとプロンプトが

>

になってしまいますが、私の入力ミスでしょうか?
ROOT
アドバイザー

ps -ef | grep XXX で表示されたプロセスのみをkillする

多分入力が間違ってますね。

以下も同様です。括弧にお気をつけください。

A=`ps -ef | grep "hoge" |grep -v "grep" |awk '{print $2}'`

kill -9 $A
watermelonyu
高貴なコントリビューター

ps -ef | grep XXX で表示されたプロセスのみをkillする

Red Hat Linuxなら pkill (プロセス名) で、

任意のプロセスをkillする事が出来るんですが、

HP-UX にはありませんね。

同等の物を(楽しんで)作ろうと思うのであれば、

Wicked Cool Shell Scripts ISBN: 1593270127 が

参考になります。

cube
アドバイザー

ps -ef | grep XXX で表示されたプロセスのみをkillする

ご指摘ありがとうございました。

今度はうまくいきました。
nt
貴重なコントリビューター

ps -ef | grep XXX で表示されたプロセスのみをkillする

/sbin/init.d の script の中にいろいろとあります。

たとえば shell function ですが

killproc() { # kill the named process(es)

echo stopping $1

pid=`/usr/bin/ps -e |

/usr/bin/grep "$1" |

/usr/bin/sed -e 's/^ *//' -e 's/ .*//'`

&& kill $pid

}

findproc() { # return pid of the named process(es)

pid=`/usr/bin/ps -e |

/usr/bin/grep "$1$" | /usr/bin/grep -v "$$" |

/usr/bin/sed -e 's/^ *//' -e 's/ .*//'`

}

などです。
S_K
頻繁なアドバイザー

ps -ef | grep XXX で表示されたプロセスのみをkillする

やっぱ、xargsでしょ。

ps -ef | grep hoge | awk '{print $2}' | xargs kill -9
hazelwood
信頼あるコントリビューター

ps -ef | grep XXX で表示されたプロセスのみをkillする

半分ちゃちゃです。

K.Sakaiさんは分かっていることとは思いますが、

> ps -ef | grep hoge | awk '{print $2}' | xargs kill -9

"ps -ef"だとコマンド引数も表示されるので、この通り実行すると、"grep hoge"もkillしに行きます。(ほとんどの場合、そんなプロセスいないといって怒られる。)

ps -e | grep hoge | awk '{print $2}' | xargs kill -9

か、

ps -ef | grep hoge | grep -v grep | awk '{print $2}' | xargs kill -9

としましょう。