プロセスがいつ開始されたかを知るために最初に推測したのは、/proc/<pid>/cmdline
最後の書き込み/修正時間を確認することです。
ps
フィールドも表示されますSTART
。どちらのソースも同じだと思います。時々彼らは同じではありません。それはどのように可能ですか?
ベストアンサー1
少なくともLinuxでは、次のようにすることもできます。
ps -o lstart= -p the-pid
より便利な開始時間を得るために。
しかし今はプロセス開始時間は必ずしも時間ではない場合があります。注文する現在呼び出し中です。プロセスは寿命の間に複数のコマンドを実行でき、通常は実行します。コマンドは時々別のプロセスを生成します。
Linuxでは、ファイル変更時間は/proc
通常(少なくとも)そのファイルがインスタンス化された日付です。これは、そのファイルにアクセスするか、ディレクトリの内容を一覧表示する最初の試行日です。
たとえば、
$ sh -c 'date +%T.%N; sleep 3; echo /proc/"$$"/xx*; sleep 3; stat -c %y "/proc/$$/cmdline"'
13:39:14.791809617
/proc/31407/xx*
2013-01-22 13:39:17.790278538 +0000
拡張すると、シェルはその内容を/proc/$$/xx*
読み取り、ファイルをインスタンス化します。/proc/$$
cmdline
また見なさい:/proc//fdのソケットのタイムスタンプ