是否可以让您的 bash 历史记录保存总执行时间你运行的每个命令?
即好像每个命令都以“时间”开头,并且结果与命令一起存储在历史记录中?
澄清:我已经知道您可以添加命令启动时间的时间戳 - 但我想知道总执行时间,而不仅仅是开始时。
答案1
通过在启动脚本中定义 HISTTIMEFORMAT,您将在 bash 历史文件的每一行中添加一个时间戳。该变量的值是 (*) 时间戳必须打印在屏幕上的方式。这是我的:
HISTTIMEFORMAT='%F-%T '
(*) 看看man 3 strftime
(如果你没有,man date
应该可以解决问题)
答案2
wait3
子进程的使用情况wait4
通过struct rusage
指针(wait4(2)
)。在下面bash 源代码, 我们发现:
$ egrep -r 'wait[34][[:blank:]]*\(' .
./jobs.c: wait3 ((union wait *)statusp, options, (struct rusage *)0)
./jobs.c: wait3 (statusp, options, (struct rusage *)0)
./jobs.c: wait3 (statusp, options, (int *)0)
$
空白(struct rusage *)0
表示资源使用量不会返还bash
。搜索struct rusage
确实在 中出现了time_command
功能execute_cmd.c
,并且这似乎确实通过以下方式收集使用信息getrusage(2)
。然而,这是针对内置TIMEFORMAT
的time
,并且似乎与历史代码没有交叉。如果没有修补bash
,我想您必须做一些麻烦事,包括运行所有内容time
,然后捕获时间信息出现在某个文件上的标准错误?