実行中のプロセスの確認

実行中のプロセスの確認

慣れていないプロセスを確認して終了するように求められました。したがって、lsbinフォルダの下にある場合は、いくつかのプロセスが表示されます.sh。しかし、どのプロセスがどのTomcatプロセスに関連付けられているかを知りたいです。

簡単に知る方法はありますか?

はい startmyprocess1.shただし、これを実行すると、実行ps -ef | grep startmyprocess1中のプロセスは返されません。

しかし、実際に実行中のTomcatプロセス名は、myprocessこれによりps -ef | grep myprocess実行中のプロセスを見ることができるからです。これを知るためには、その担当者に問い合わせてください。

だから名前が違います。もしそうなら、私は彼に何度も尋ねなければなりません。この問題を解決するより良い方法はありますか?

答え1

これを試してみてください。、(テストされていません)

ps -aux | grep "yourprocess"

例えば、

ps -aux | grep "httpd"

答え2

実際にstartmyprocess.shでmyprocessを起動してください。いいえデフォルトのシェルスクリプトの後にプロセス名を指定するため、ps -ef | grep startmyprocess1結果は返されません。

これは、多くのプロセス、特にデーモンが簡単に参照できるように、そのPIDをファイルに書き込む理由でもあります。これは次の方法で行うことができます。

#!/bin/sh
pid=`myprocess`
echo $pid > /tmp/myprocess.pid

あるいは、$!最後のpidを含むエントリを照会することもできます。

#!/bin/sh
myprocess
echo $! > /tmp/myprocess.pid

そして、pidに基づいてクエリ/リストプロセスを実行します。

ps --pid $PID

答え3

私は「トップ」のようなソフトウェアが素晴らしい仕事をしていると思います。

タイプ:

top

または

htop

答え4

@invertの答えはすでに多くを説明しており、シェルスクリプトはその中のコマンドを実行します。topつまり、または出力からシェルスクリプト名を取得せずに、htopシェルスクリプトの各ルーチンに対して/proc/$PID/cmdlineのみを印刷することを意味します。

echo $!希望のPIDを取得するには、afterコマンドを使用することに加えて。必要に応じてコマンドを使用したいpgrep(または終了するにはpkill)。

pgrep, pkill - 名前やその他の属性に基づいてプロセスを検索またはシグナルを送信します。

pgrep は単に /proc/*/cmdline を通して引数を収集し、一致する PID を出力します。 pkillはkillと互換性があるため、cmdlineを使用してすべてのルーチンを簡単にpkillできます。

関連情報