2

我是大学服务台的学生经理,我们广泛使用 rsync 来备份用户机器上的数据。然而,我注意到的一个问题是,很多时候,我们会遇到网络连接中断(这会导致任何正在运行的传输到我们的备份服务器的传输失败)。除非有人碰巧看到“断管”错误,否则转移只会停滞不前,直到第二天碰巧有人查看。

我的问题是:如果上一个命令返回错误,有没有办法让我播放声音?Ubuntu 或 OS X 上的解决方案将不胜感激。我知道&&在成功运行后用于执行命令和;简单地运行另一个命令,但我不确定在失败时发出声音/不知道是否trap会在 OS X/Ubuntu 上始终如一地工作。

谢谢您的帮助!

4

2 回答 2

2

Ubuntu 和 OS X 都具有全功能bash,因此这里与陷阱管理没有区别。

我不详细了解 Ubuntu,但在 OS X 上,您可以使用以下命令:

  • afplay some.mp3- 可以播放任何可以播放 QuickTime 的音频,如 mp3、wav、aiff 等...
  • say -v Alex "message"- 将文本 2 语音 - 用计算机生成的语音阅读消息

bot 命令可用于:

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"

您需要使用||for running 命令,但结果不成功。最好的形式是作为一个函数,比如:

#!/bin/bash

err() {
    say -v Alex "$@"
    afplay "/path/to/music/file.mp3" &
    echo "$@" >&2
    return 1
}

rsync .. || err "rsync failed" || exit 1
于 2013-05-08T01:34:43.663 回答
1

把这个放进去~/.bash_profile

PROMPT_COMMAND='(( $? )) && printf "\a"'
于 2013-05-08T01:31:46.940 回答