Utk*_*nha 96 unix notifications command-line process
我工作的地方有需要很长时间才能执行的命令。
是否有命令/实用程序可用于在命令执行结束时通知我?它可能是一个弹出窗口,也可能是一个小声音。
slh*_*hck 140
通常,如果您在运行命令之前知道这一点,则可以使用以下命令启动它:
command; command-after &
Run Code Online (Sandbox Code Playgroud)
这将在前一个命令退出command-after
后执行(不管其退出代码如何)。该&
会在后台启动它。
如果您关心成功或失败退出,请分别使用:
command && command-after-only-if-success &
command || command-after-only-if-fail &
Run Code Online (Sandbox Code Playgroud)
如果命令已经启动,您可以使用作业控制将其挂起,然后将其返回到前台,并fg
与您的通知链接:
command
# enter Ctrl-z
fg ; command-after
Run Code Online (Sandbox Code Playgroud)
现在……你想在这之后做什么取决于你的环境。
在任何系统上,您都可以“敲响”终端铃声。取决于您的确切系统什么真正有效(BSD 与 GNU Linux 等),但tput bel
应该这样做。不过,我现在无法可靠地测试它。搜索“铃声”以了解更多信息。
在Mac OS X 上,您可以使用 AppleScript 弹出 Finder 对话框:
osascript -e 'tell Application "Finder" to display dialog "Job finished" '
Run Code Online (Sandbox Code Playgroud)
你可以让它对你说些什么:
say "Job finished"
Run Code Online (Sandbox Code Playgroud)
或者您可以使用 Mountain Lion 的通知系统:
sudo gem install terminal-notifier # <= only need to do this once
terminal-notifier -message "Job finished!" -title "Info"
Run Code Online (Sandbox Code Playgroud)在GNOME 中,zenity
可以显示一个 GTK 对话框,从命令行调用。另请参阅此堆栈溢出问题:在 linux 中显示来自 bash 脚本的消息框。它可以通过您最喜欢的包管理器安装。
zenity --info --text="Job finished"
Run Code Online (Sandbox Code Playgroud)在实现桌面通知规范的桌面环境中,例如Ubuntu和GNOME,有一个通知系统可以触发notify-send
(部分libnotify
)。
notify-send "Job finished!"
Run Code Online (Sandbox Code Playgroud)KDE使用kdialog
,例如:
kdialog --passivepopup 'Job finished'
Run Code Online (Sandbox Code Playgroud)tri*_*nth 21
在类 Unix 系统上,您可以按响铃:
echo -e "\a"
Run Code Online (Sandbox Code Playgroud)
小智 9
我为 MacOS X 创建了一个简单的工具,它就是这样做的。https://github.com/vikfroberg/brb
安装
$ npm install -g brb
Run Code Online (Sandbox Code Playgroud)
指示
$ sleep 3; brb
Run Code Online (Sandbox Code Playgroud)
小智 7
我ntfy
正是为此目的而写的。它是跨平台的,可以在长时间运行的命令完成时自动发送通知。
如果您有 Python pip
(大多数 Linux 发行版和 MacOS 都有),以下是安装它并启用自动通知的方法:
$ sudo pip install ntfy
$ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc
$ # restart your shell
Run Code Online (Sandbox Code Playgroud)
除此之外,它还可以:
要获得声音通知,您可以使用spd-say "Some text"
. 例子:
some-command; spd-say "Yo"
Run Code Online (Sandbox Code Playgroud)
更新
如果你没有预先安装语音调度器,你可以通过以下方式安装它:
sudo apt-get install speech-dispatcher
Run Code Online (Sandbox Code Playgroud)
小智 5
尽管其他答案已经涵盖了获取已完成工作通知的大部分方法,但由于您以以下格式提出问题,我想给我两分钱:
我工作的地方有一些需要很长时间才能执行的命令。
我也有同样的问题。有时某些东西可以运行 15 分钟。
我的 .bashrc 中有以下函数:
# push a notification to your phone. can be handy if you're running a
# build and you want to be notified when it's finished.
push() {
curl -s -F "token=PUSHOVER_TOKEN" \
-F "user=PUSHOVER_USER" \
-F "title=terminal" \
-F "message=$1" https://api.pushover.net/1/messages.json > /dev/null 2>&1
}
Run Code Online (Sandbox Code Playgroud)
这使用 Pushover 应用程序将通知推送到我的手机。这样,我可以去吃午饭或参加会议,并且在离开之前仍然可以收到有关我在计算机上启动的作业的通知。
我按以下方式使用它:
command_to_run && push "yes! command finished successfully!" || push "awww man! something failed :-("
Run Code Online (Sandbox Code Playgroud)
因此,如果该命令返回正确的退出代码,则将执行第一次推送。出现错误时,将执行第二个。
Ofc 您需要在 Pushover 创建一个用户,并注册一个应用程序以从 https://pushover.net/发送通知
希望这有帮助!
归档时间: |
|
查看次数: |
84761 次 |
最近记录: |