2

実行中のプロセスを確認できるように、Java API を使用してリモート マシンに接続しています。

要件の 1 つは、任意のプロセスを強制終了できることです。

今、私はコマンドを実行しています

ps aux | grep java実行中のプロセスのリストを返します。

例えば。

ルート 330 0.2 0.0 0 0 ポイント/0 Z 08:42 0:11 [java] 

上記の出力に使用される仕様を知っている人はいますか? 上記の行を、330 がプロセス ID になるオブジェクトに変換する必要があります。

4

3 に答える 3

4

たぶん、次のようなものを使用できます。

ps -ef | grep java | awk -F" " '{print $2}'

または、フォーマットを自分で指定します (例: pid とコマンドのみ):

ps -eo pid,comm | grep java | awk -F" " '{print $1}'

grep に引数付きのコマンドが必要な場合:

ps -eo pid,command | grep java | awk -F" " '{print $1}'
于 2011-09-15T09:04:09.577 に答える
3

その名前のプロセスの pid だけに関心がある場合は、 check pgrep.


例:

$ pgrep sshd
791
22956
23060
于 2011-09-15T09:08:03.973 に答える
1

私のUbuntuシステムでpsは、次の標準に準拠していると述べています。

規格 この ps は以下に準拠しています。

 1   Version 2 of the Single Unix Specification
 2   The Open Group Technical Standard Base Specifications, Issue 6
 3   IEEE Std 1003.1, 2004 Edition
 4   X/Open System Interfaces Extension [UP XSI]
 5   ISO/IEC 9945:2003</blockquote>

しかし、pgrepすでにメンテナンスされており、プロセス名などについてすでに理解している に問題をオフロードすることを検討することもできます。これにより、はるかに単純な出力が得られます。デフォルトでは、次のように、一致するプロセス ID が 1 行に 1 つずつ表示されます。

$ pgrep apache
3990
22244
22388
22391
22476

それよりも解析が容易になることはありません。もっと見る必要がある場合は、次の-lフラグを検討してください。

$ pgrep -l apache
3990 apache2
22244 apache2
22388 apache2
22391 apache2
22476 apache2

また、そのデータを探す場所である/procfilesystemを調べることも検討してください。ps

于 2011-09-15T09:07:00.717 に答える