是否有可能获得一个旧的正在运行的进程的开始时间?如果不是今天开始,ps似乎会报告日期(而不是时间),如果不是今年开始,ps只会报告年份。老工艺的精确度会永远消失吗?
当前回答
ls -ltrh /proc | grep YOUR-PID-HERE
例如,我的谷歌Chrome的PID是11583:
ls -l /proc | grep 11583
dr-xr-xr-x 7 adam adam 0 2011-04-20 16:34 11583
其他回答
ps -eo pid,cmd,lstart | grep YOUR-PID-HERE
作为Adam Matan回答的后续,/proc/<pid>目录的时间戳本身不一定直接有用,但可以使用
awk -v RS=')' 'END{print $20}' /proc/12345/stat
获取系统启动后的开始时间
这是一个使用起来有点棘手的单位;有关详细信息,请参见将jiffies转换为秒。
awk -v ticks="$(getconf CLK_TCK)" 'NR==1 { now=$1; next }
END { printf "%9.0f\n", now - ($20/ticks) }' /proc/uptime RS=')' /proc/12345/stat
这将为您提供秒数,您可以将其传递给strftime()以获得(人类可读的或其他)时间戳。
awk -v ticks="$(getconf CLK_TCK)" 'NR==1 { now=$1; next }
END { print strftime("%c", systime() - (now-($20/ticks))) }' /proc/uptime RS=')' /proc/12345/stat
在评论中更新了Stephane Chazelas的一些修复;一如既往的感谢!
如果你只有莫克,也许可以试试
awk -v ticks="$(getconf CLK_TCK)" -v epoch="$(date +%s)" '
NR==1 { now=$1; next }
END { printf "%9.0f\n", epoch - (now-($20/ticks)) }' /proc/uptime RS=')' /proc/12345/stat |
xargs -i date -d @{}
1人proc;搜索开始时间。
$ ps -p 182454 -o lstart=
Mon Oct 18 17:26:44 2021
但是我能得到以epoch秒为单位的答案吗?
使用ls -ld /proc/process_id命令,其中process_id可以通过top命令找到
ps -eo pid,etime,cmd|sort -n -k2