【问题标题】:Record command execution time记录命令执行时间
【发布时间】:2011-11-09 10:48:06
【问题描述】:

有一种可爱的方式可以在 linux 控制台中记录所有命令的开始日期/时间。您应该将变量 HISTTIMEFORMAT 设置为“%F %T”。然后通过运行“历史”命令,您将看到如下内容:

512 2011-09-02 22:57:41 导出 HISTTIMEFORMAT="%F %T" 513 2011-09-02 22:57:42 514 2011-09-02 22:57:43 历史 515 2011-09-02 22:57:45 历史

这是非常酷和有用的。但我的梦想是将命令执行时间也添加到此日志中。我知道我可以运行 'time ./some_long_lasting_script' 但我不想每次都手动编写时间。也许有某种方法可以自动保存每个命令的执行时间?

【问题讨论】:

  • 您使用哪种外壳?重击? zsh?你到底想要什么在你的日志文件中 - 有无数的 time 输出格式,比如 xxx 0,00s user 0,00s system 0% cpu 0,001 total 或类似的东西:real 0m0.007s user 0m0.000s sys 0m0.004s 你到底想要什么(哪些时间)和什么格式?
  • 我正在使用 bash。理想的时间是四舍五入的秒数。
  • 至少有 3 种可能的时间 - 通常是“用户时间”、“系统时间”和“墙(总)时间”。你想要哪一个?
  • 任何时候都适合我。我需要这个来记录持久命令的时间,而且我不需要超级准确。

标签: shell history command-line-interface


【解决方案1】:

如果不太分散注意力,您可以更改提示以显示当前日期和时间。

如果您使用的是 bash,请考虑以下内容:

export PS1="[\D{%Y-%m-%d} \T][\u@\h \W]\$ "

看起来像:

[2011-09-03 03:39:21][james@fractal ~]$ echo $PS1
[\D{%Y-%m-%d} \T][\u@\h \W]$
[2011-09-03 03:39:30][james@fractal ~]$ vi
[2011-09-03 03:39:39][james@fractal ~]$ ping google.com
PING google.com (74.125.93.147) 56(84) bytes of data.
64 bytes from qw-in-f147.1e100.net (74.125.93.147): icmp_req=1 ttl=47 time=51.3 ms
^C
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 51.343/51.343/51.343/0.000 ms
[2011-09-03 03:39:44][james@fractal ~]$ 

当然,您可以根据个人喜好定制提示。

要永久更改您的提示,您可以将 export PS1=... 添加到您的 ~/.bashrc 文件中。或者,您可以编写别名来来回切换,例如,在您的 ~/.bashrc 文件中,

alias prompt_ts_on='export $PS1=...'
alias prompt_ts_off='export $PS1="[\u@\h \W]\$ "'

请注意,... 应该是您选择的双引号括起来的提示字符串。

关于 PS1 转义序列的一些参考资料:herehere

【讨论】:

  • 这个解决方案的问题是提示中的时间显示了创建提示的时间而不是命令运行时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 2019-03-11
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
相关资源
最近更新 更多