web-dev-qa-db-ja.com

プロセス名を指定してプロセスのPIDを取得し、それを変数に保存してさらに使用するにはどうすればよいですか?

「ucbps」コマンドを使用すると、すべてのPIDを取得できます

 $ ucbps

   Userid     PID     CPU %  Mem %  FD Used   Server                  Port
   =========================================================================

   512        5783    2.50   16.30  350       managed1_adrrtwls02     61001
   512        8896    2.70   21.10  393       admin_adrrtwls02        61000
   512        9053    2.70   17.10  351       managed2_adrrtwls02     61002

このようにしたいのですが、どうすればいいのかわかりません

  1. 変数=プロセス名でプロセスのpidを取得します。
  2. 次に、このコマンドkill -9変数を使用します。
45
Nidhi

文字列に基づいて-9を削除する場合(最初に削除してみてください)、次のようなことができます。

ps axf | grep <process name> | grep -v grep | awk '{print "kill -9 " $1}'

これは、あなたが何を殺そうとしているのかを示し(非常に、非常に重要です)、実行するときにshにパイプします:

ps axf | grep <process name> | grep -v grep | awk '{print "kill -9 " $1}' | sh
86
Ben
pids=$(pgrep <name>)

指定された名前を持つすべてのプロセスのPIDを取得します。それらをすべて殺すには、

kill -9 $pids

変数の使用を控え、特定の名前の問題を持つすべてのプロセスを直接強制終了するには

pkill -9 <name>
67
XZS

一行で...

pgrep -f process_name | xargs kill -9
20
Stephen

別の可能性は、ほとんどのディストリビューションに通常付属するpidofを使用することです。名前を使用して、特定のプロセスのPIDを返します。

pidof process_name

この方法で、その情報を変数に保存し、kill -9を実行できます。

#!/bin/bash
pid=`pidof process_name`
kill -9 $pid
12
flazzarini

grep [n] ameを使用して、そのgrep -v名を削除します... xargsを使用する方法は、rnuをパイプする方法に誤りがあります。-i(インタラクティブモード)コマンドに問題がある可能性があります。

ps axf | grep | grep -v grep | awk '{print "kill -9" $ 1}'? ps aux | grep [n] ame | awk '{print "kill -9" $ 2}'?良くない?

0
Pawel K