他の端末で起動されたコマンドのプロセスIDを見つけるには?

他の端末で起動されたコマンドのプロセスIDを見つけるには?

sleep 30あるPuTTYウィンドウで実行している場合は、他のPuTTYウィンドウでsleepコマンドのプロセスIDをどのように見つけますか?

答え1

pgrepコマンド

あなたのディストリビューションに正規表現コマンドがインストールされます(例:プロセスパッケージ)、対応するコマンドを使用してパターンごとにプロセスIDを見つけることができます。たとえば、

# Find the sleep commands belonging to the current user.
pgrep -u $LOGNAME sleep

このコマンドは、プロセスが現在の端末で開始されているか、他の端末で開始されたかにかかわらず、現在のユーザーに属するすべての一致を見つけるため、PuTTYのユースケースに適しています。

テストpgrepコマンド

単一のTTYまたはPTYでこれを非常に簡単にテストすることもできます。考慮する:

$ sleep 30 & pgrep -u $LOGNAME sleep
[1] 24021
24021

この例では眠るBashはバックグラウンドジョブのジョブIDとPIDを報​​告します。それから正規表現プロセスリストで同じPIDを見つけ、標準出力にPIDを送信します。当然、数字が一致する必要があります。

複数のゲーム

現在のユーザーが複数眠るコマンドが実行された後正規表現複数のPIDが正しく報告されます。たとえば、次のコマンドはバックグラウンドジョブのPID%1合計を返します%2

$ sleep 30 & sleep 30 & pgrep -u $LOGNAME sleep
[1] 24063
[2] 24064
24063
24064

答え2

ps -u "your_login" | grep "sleep" | awk '{print $1}'

関連情報