我是大学服务台的学生经理,我们广泛使用 rsync 来备份用户计算机上的数据。然而,我注意到的一个问题是,很多时候,我们会出现网络连接中断(这会导致任何正在运行的传输到我们的备份服务器失败)。除非有人碰巧看到“管道损坏”错误,否则传输就会陷入停滞,直到第二天有人碰巧查看。
我的问题是:如果上一个命令返回错误,有没有办法让我播放声音? Ubuntu 或 OS X 上的解决方案将不胜感激。我知道如何使用 &&
用于在成功运行后执行命令和 ;
只是运行另一个命令,但我不确定是否会在失败时发出声音/不知道是否 trap
将在 OS X/Ubuntu 上一致工作。
感谢您的帮助!
最佳答案
Ubuntu 和 OS X 都有全功能的 bash
,因此陷阱管理没有区别。
我不太了解 Ubuntu,但在 OS X 上你可以使用以下命令:
afplay some.mp3
- 可以播放任何可以播放 QuickTime 的音频,mp3、wav、aiff 等...say -v Alex“message”
- will to text2speech - 使用计算机生成的语音阅读消息
机器人命令可用于:
rsync ... || say -v Alex "Hey, Hudston we have an rsync problem at $(hostname)", or
rsync ... || afplay "/Users/me/Music/iTunes/iTunes Media/Music/Michael Jackson/Bad/01 Bad.m4a"
如果运行命令失败,则需要使用||
。最好的形式是作为一个函数,例如:
#!/bin/bash
err() {
say -v Alex "$@"
afplay "/path/to/music/file.mp3" &
echo "$@" >&2
return 1
}
rsync .. || err "rsync failed" || exit 1
关于bash - 终端中命令错误时播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16430940/