存储执行时间的bash历史记录?

存储执行时间的bash历史记录?

是否可以让您的 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)。然而,这是针对内置TIMEFORMATtime,并且似乎与历史代码没有交叉。如果没有修补bash,我想您必须做一些麻烦事,包括运行所有内容time,然后捕获时间信息出现在某个文件上的标准错误?

相关内容