如何在不使用etimes的情况下在进程开始后的几秒钟内获得时间?

时间:2016-11-14 11:46:38

标签: linux bash

尝试使用ps查找自进程启动以来的秒数。我的ps版本不支持etimes,也不确定如何获取此信息?

1 个答案:

答案 0 :(得分:2)

对于pid 1234的过程,您可以使用伪文件/proc/1234/status的元数据的 mtime 字段。请阅读proc(5)了解更多信息。 另请参阅stat(2)stat(1)以及date(1)

所以date +%s提供自Unix epoch以来的当前日期,例如1479125355现在在11月14日 th ,2016。stat -c %Y /proc/1234/status给出了自Unix时代以来的过程1234的开始时间。你想要区别。也许使用(经过测试,我的交互式shell是zsh
$[$(date +%s) - $(stat -c %Y /proc/1234/status)];适应你的shell。

例如:

 bash -c 'sleep 4; echo $(($(date +%s) - $(stat -c %Y /proc/$$/status)))'

按预期给我4分。当然$$扩展为bash -c命令的pid