当作业或流程结束时如何触发通知?

当作业或流程结束时如何触发通知?

我工作的地方有一些命令需要很长时间才能执行。

是否有命令/实用程序可用于在命令执行结束时通知我?它可能是一个弹出窗口,也可能是一点声音。

答案1

一般来说,如果你知道这一点运行该命令,你可以直接使用以下命令启动它:

command; command-after &

这将执行command-after 前一个命令已退出(无论其退出代码是什么)。&将在后台启动它。

如果您关心成功或失败退出,请分别使用:

command && command-after-only-if-success &
command || command-after-only-if-fail &

如果命令有已经fg启动后,您可以使用作业控制来暂停它,然后通过通知将其返回到前台:

command
# enter Ctrl-z
fg ; command-after

现在... 此后您要做什么取决于您的环境。

  • 任何系统, 你可以“响起”终端铃声。取决于您的具体系统,哪种方式真正有效(BSD 与 GNU Linux 等),但tput bel应该可以。不过,我现在无法可靠地测试它。搜索“ring bell”以了解更多信息。

  • Mac OS X,你可以使用 AppleScript 弹出 Finder 对话框:

    osascript -e 'tell Application "Finder" to display dialog "Job finished" '
    

    你可以让它对你说些什么:

    say "Job finished"
    

    或者你可以使用 Mountain Lion 的通知系统:

    sudo gem install terminal-notifier # <= only need to do this once
    terminal-notifier -message "Job finished!" -title "Info"
    
  • GNOMEzenity可以显示从命令行调用的 GTK 对话框。另请参阅此 Stack Overflow 问题:在 Linux 中显示来自 Bash 脚本的消息框。它可以通过您最喜欢的包管理器进行安装。

    zenity --info --text="Job finished"
    
  • 有些发行版可能有xmessage. 特别是对于 GTK 环境,有gxmessage

  • 在实现桌面通知规范, 例如UbuntuGNOME,您可以使用以下方式触发通知系统notify-send(部分libnotify)。

    notify-send "Job finished!"
    
  • 桌面环境用途kdialog,例如:

    kdialog --passivepopup 'Job finished'
    

答案2

在类 Unix 系统上,你可以响铃:

echo -e "\a"

答案3

我为 MacOS X 创建了一个简单的工具,可以完成这个任务。https://github.com/vikfroberg/brb

安装

$ npm install -g brb

指示

$ sleep 3; brb

答案4

要获取声音通知,您可以使用spd-say "Some text"。例如:

some-command; spd-say "Yo"

更新

如果您没有预先安装语音调度程序,您可以通过以下方式安装:

sudo apt-get install speech-dispatcher

相关内容