war*_*ren 13 bash monitoring alias date time
是否可以在bash.
例如,我希望有一个特定的用户,无论何时运行命令,它总是用datebefore 和 after 或time.
这是可能的,如果是,如何?
Gil*_*il' 10
您可以记录启动命令行的时间和显示提示的时间。Bash 已经在其历史记录中记录了每个命令行的开始日期,您可以记下显示下一个提示的时间。
print_command_wall_clock_time () {
echo Wall clock time: \
$(($(date +%s) - $(HISTTIMEFORMAT="%s ";
set -o noglob;
set $(history 1); echo $2)))
}
PROMPT_COMMAND=print_command_wall_clock_time$'\n'"$PROMPT_COMMAND"
Run Code Online (Sandbox Code Playgroud)
这只会给你第二个分辨率,而且只有挂钟时间。如果你想要更好的分辨率,你需要使用date支持%N纳秒格式的外部命令,以及在运行命令之前DEBUG调用的陷阱date时间。
call_date_before_command () {
date_before=$(date +%s.%N)
}
print_wall_clock_time () {
echo "Wall clock time: $(date +"%s.%N - $date_before" | bc)"
}
trap call_date_before_command DEBUG
PROMPT_COMMAND=print_wall_clock_time
Run Code Online (Sandbox Code Playgroud)
即使有DEBUG陷阱,我也不认为有一种方法可以自动显示每个命令的处理器时间,或者比提示提示更具辨别力。
如果您愿意使用不同的 shell,这里是如何为 zsh 中的每个命令获取时间报告(这不会推广到其他任务):
REPORTTIME=0
Run Code Online (Sandbox Code Playgroud)
您可以设置REPORTTIME为任何整数值,仅会为使用超过此多秒处理器时间的命令显示计时信息。
Zsh 从调用变量的 csh 中获取了此功能time。