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}'