Linux
程序何時開始
要知道程序何時開始,我的第一個猜測是檢查
/proc/<pid>/cmdline
上次寫入/修改的時間。
ps
還顯示一個START
欄位。我認為這兩個來源都是一樣的。有時它們並不相同。怎麼可能?
至少在 Linux 上,您還可以執行以下操作:
ps -o lstart= -p the-pid
有一個更有用的開始時間。
但是請注意,這是程序啟動的時間,不一定是呼叫它目前正在執行的*命令的時間。*程序可以(並且通常會)在其生命週期中執行多個命令。命令有時會產生其他程序。
Linux上文件的 mtimes
/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*
導致 shell 讀取/proc/$$
導致cmdline
文件被實例化的內容。另請參閱:/proc//fd 中的套接字時間戳