Linux:パラメータに基づいてプロセスを終了する

Linux:パラメータに基づいてプロセスを終了する

コマンドライン引数に基づいてプロセスを終了する方法は? killallpgrepおよびはpkillプロセス名に基づいてのみ機能するようです。

Java Virtual Machine内で実行されている複数のアプリケーションを区別できる必要があり、javaすべてのアプリケーションのプロセス名はどこにあり、コマンドライン引数を見て実際のアプリケーション名を見つけることができるはずです。

これは手動で実行し、出力ps aux | grep myapp.jarからpidを手動で削除できますが、同じ操作を自動的に実行するコマンドが必要です。

答え1

pgrep/フラグpkillを入手してください-fmanページから:

-f    The pattern is normally only matched against the process name.
      When -f is set, the full command line is used.

たとえば、

$ sleep 30& sleep 60&
[1] 8007
[2] 8008

$ pkill -f 'sleep 30'
[1]  - terminated  sleep 30

$ pgrep sleep
8008

答え2

以下を、argumentプロセスの完全なコマンドラインを含める必要がある正規表現に置き換えます。

kill `ps -eo pid,args --cols=10000 | awk '/argument/ && $1 != PROCINFO["pid"] { print $1 }'`

答え3

htopコマンドライン引数を使用して、現在実行中のすべてのプロセスを表示し、選択したプロセスを終了できます。

答え4

pkillなどがない場合は、proc / [1-9] * / cmdlineを使用してください。

grep -a myapp.jar /proc/[1-9]*/cmdline|tr '\0' ' '|grep -v grep|awk -F/ '{print $3}'

関連情報