Linux

程序何時開始

  • January 9, 2015

要知道程序何時開始,我的第一個猜測是檢查/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 中的套接字時間戳

引用自:https://unix.stackexchange.com/questions/62154