是否有可能获得一个旧的正在运行的进程的开始时间?如果不是今天开始,ps似乎会报告日期(而不是时间),如果不是今年开始,ps只会报告年份。老工艺的精确度会永远消失吗?
当前回答
作为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;搜索开始时间。
其他回答
你可以指定一个格式化程序并使用lstart,就像下面这个命令:
ps -eo pid,lstart,cmd
上面的命令将输出所有进程,使用格式化器获取PID、命令运行和启动日期+时间。
示例(来自Debian/Jessie命令行)
$ ps -eo pid,lstart,cmd
PID CMD STARTED
1 Tue Jun 7 01:29:38 2016 /sbin/init
2 Tue Jun 7 01:29:38 2016 [kthreadd]
3 Tue Jun 7 01:29:38 2016 [ksoftirqd/0]
5 Tue Jun 7 01:29:38 2016 [kworker/0:0H]
7 Tue Jun 7 01:29:38 2016 [rcu_sched]
8 Tue Jun 7 01:29:38 2016 [rcu_bh]
9 Tue Jun 7 01:29:38 2016 [migration/0]
10 Tue Jun 7 01:29:38 2016 [kdevtmpfs]
11 Tue Jun 7 01:29:38 2016 [netns]
277 Tue Jun 7 01:29:38 2016 [writeback]
279 Tue Jun 7 01:29:38 2016 [crypto]
...
您可以阅读ps的manpage或查看Opengroup的页面以获得其他格式化程序。
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
使用ls -ld /proc/process_id命令,其中process_id可以通过top命令找到
ps -eo pid,cmd,lstart | grep YOUR-PID-HERE
ps -eo pid,etime,cmd|sort -n -k2
推荐文章
- 快速unix命令显示文件中间的特定行?
- fork(), vfork(), exec()和clone()的区别
- 检查bash变量是否等于0
- 在tmux中保持窗口名称固定
- 只使用md5sum获取哈希值(没有文件名)
- 如何生成一个核心转储在Linux上的分段错误?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 在Bash中测试非零长度字符串:[-n "$var"]或["$var"]
- 如何删除超过X小时的文件
- 如何创建Bash别名?
- 将所有变量从一个shell脚本传递到另一个?
- 如何在Apache服务器上自动将HTTP重定向到HTTPS ?
- 如何删除shell脚本中文件名的扩展名?
- 使用xargs调用shell函数
- 如何限制从grep返回的结果的数量?