Tgr*_*Tgr 9 bash notifications
当我等待缓慢的命令(例如对大型数据库的操作)时,我开始做其他事情,并且经常很长时间没有注意到它已经完成,浪费了宝贵的时间。我正在寻找一种让 shell 提醒我的方法(我的意思是,运行一些我可以确定的自定义命令)当一个已运行超过 X 秒的命令完成并且我返回提示时。
我正在使用 Bash,但其他 shell 的解决方案也会很有趣。
Ste*_*del 12
这个脚本,如果放在你的 中.bashrc,将在长时间执行命令后提示返回时执行你喜欢的任何命令 --gt以秒为单位自定义“长时间”(在 之后),并且在同一行的大括号内,你可以执行你喜欢的任何命令。您甚至可以向自己发送一封电子邮件,其中包含发生这种情况的主机以及上次执行的命令及其状态代码。
beep_if_long_time_past() {
LAST_COMMAND_DURATION=$(($(date +%s) - ${LAST_COMMAND_TIME}))
[[ ${LAST_COMMAND_DURATION} -gt 60 ]] && { echo "花了很长时间,不是吗?" ; notify-send "我在 ${LAST_COMMAND_DURATION} 秒后完成了!"; }
导出 LAST_COMMAND_TIME=
}
export PROMPT_COMMAND=beep_if_long_time_past
陷阱 '[ -z ${LAST_COMMAND_TIME} ] && export LAST_COMMAND_TIME=$(date +%s)' DEBUG
slowcommand; echo -e "\a"
Run Code Online (Sandbox Code Playgroud)
可以,但是每次都手动追加通知命令很丑,不方便;也容易忘记。(wait如本答案所述,可以将通知附加到已运行的进程,但这更难看。)
| 归档时间: |
|
| 查看次数: |
5361 次 |
| 最近记录: |