4

Linuxで最後の/最新のプロセスpidを取得したいのですが、それを見つけるためのコマンドを誰かに提案してもらえますか? しかし、どのプロセスが最後に開始されたかはわかりません。

4

3 に答える 3

6

更新: awkについてのヒントをくれたWilliamに感謝します。
前提条件:プロセスはまだ実行中である必要があります。

私はUNIXの専門家ではありませんが、次のアプローチについて考えました。

ps aux --sort +start_time | tail -n 4 | awk 'NR==1{print $2}'

psすべてのプロセスが一覧表示され、start_timeで並べ替えます。その後、出力の最後の行[0]から4番目を取得し、awkは2番目のフィールドで見つかったpidを返します。

root@unix ~ % sleep 10 &
[1] 3009
root@unix ~ % ps aux --sort +start_time | tail -n 4 | awk 'NR==1{print $2 " " $11}'
3009 sleep
root@unix ~ %

[0]コマンドラインに3つのパイプコマンドがあるため、4行目。

于 2012-09-24T10:06:40.487 に答える
6

最後に実行されたバックグラウンド コマンドのプロセス ID が必要な場合は、! 変数。例えば:

 > gvim text.txt &
 > echo $!
 2842
于 2012-09-25T06:16:29.033 に答える
2

取得PID:

#!/bin/bash
my-app & echo $!

PID変数に保存:

#!/bin/bash
my-app & export APP_PID=$!

すべてのインスタンスPIDをテキスト ファイルに保存します。

#!/bin/bash
my-app & echo $! >>/tmp/my-app.pid

出力、エラーをPID別のファイルに保存します。

#!/bin/bash
my-app >/tmp/my-app.log 2>/tmp/my-app.error.log & echo $! >>/tmp/my-app.pid

echo "my-app PID's: $(cat /tmp/my-app.pid)"
于 2016-01-22T15:44:22.570 に答える