事后查找命令执行时间


22

我刚刚从bash提示符处执行了一个长时间运行的过程。事后看来,我希望我继续尝试time一下,或者记下启动它的时间。

有什么方法可以追溯获取此信息?在.bash_history似乎不包含时间戳。

在我的特殊情况下,它是Mac OS X,但我对一般的Unix / Linux解决方案感兴趣。

要澄清的是,该过程现已完成,除非绝对必要,我宁愿不要再次运行它!


我也总是忘记了这一点,并且我将提示配置为显示时间。
2012年

Answers:


23

bash 直到关闭外壳时,我才真正记住时间。

所以尝试跑步

HISTTIMEFORMAT='%x %X ' history

如果你也放

HISTTIMEFORMAT=<some format>

在您的中~/.bashrc,它也会~/.bash_history在退出时写入,因此您也可以检查以前的Shell会话中发生了什么。


很棒的迈克,甚至都不认为这是可能的。
蒂姆(Tim)

9

Mikel的回答很好,只是如果您运行该程序并离开一会儿,您将无法真正确定该过程何时完成。因此,即使您有时间启动程序,也不知道花了多少时间。

当您需要在没有准备的情况下进行查找时,我没有解决方案。但是,如果您要再次执行此操作,则可以像我一样:将当前时间与shell提示一起打印。这样,如果仍然打开终端,则可以看到启动程序的时间以及打印下一个提示的时间。进行一些数学运算即可为您节省执行时间。

为此bash,请将其放入您的.bashrc

export PS1="\A \u@\h \W \$ "

在中zsh,将其放入您的.zshrc

export PS1="%D{%H:%M} %n@%m %1~ %# "

以上将为您的shell提示提供格式<time> <username>@<hostname> <current dir> <$ or % or #>。对于不同的外壳和疯狂的 花哨提示,请阅读外壳的手册页。

注意:如果您需要高精度,或者程序产生的输出太多而看不到前面的提示,则可能对您没有帮助。


2
由于这个原因,我在外壳程序提示符中包含了一个时间戳,但是请注意,提示符中显示的时间是打印提示符的时间,这可能与您实际完成键入并按Enter键启动命令的时间完全不同。换句话说,请记住自己考虑“提示空闲时间”。
2012年

5

如果该进程仍在运行,则可以ps用来获取启动时间以及已使用了多少CPU时间。

例如,对于所有过程:

ps -eo cputime,start,pid,command,args

对于特定的pid(12345):

ps -p 12345 -o cputime,start,pid,command,args

谢谢,但是过程已经完成。如果我再次运行它,我会牢记这一点。
Graham Borland

ps在linux中使用GNU ,ps在MacOSX中可能是BSD,我不确定这些参数。
jsbillings 2012年

另外,请记住,CPU时间不是“实时”
2012年

4

lastcomm(如果启用了BSD进程记帐)将为您提供执行持续时间(在某种程度上可能是适当的,也可能不是足够的)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.