私のデスクトップはUbuntuで、便利なプログラムnotify-send
があります 、デスクトップにアラートをポップアップします。また、次の便利なエイリアスが組み込まれています。
$ type alert
alert is aliased to `notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e 's/^s*[0-9]+s*//;s/[;&|]s*alert$//')"'
これは、very-long-running-command; alert
、端末をバックグラウンドで実行したままにし、タスクが完了したときに通知を受け取ります。
sshを介してCentOSサーバーを使用している場合は、少し注意が必要です。これを行う1つの方法は次のとおりです。
localhost$ ssh [email protected]; alert
example.net$ very-long-running-command; exit
これは流行の後で機能しますが、すべてのコマンドの後で終了することは、一般的に私がやりたいことではありません。
私のコンピューターにはスピーカーがありません。ビープ音が鳴ります。
承認された回答:
ここで想像できる最も簡単なことは、2番目のSSHセッションを使用して名前付きFIFOを転送することです。 tmp/
があると思います あなたの家のディレクトリで;好きな場所にFIFOを自由に保管してください。
local$ ssh [email protected] 'mkfifo ~/tmp/alert_fifo ; while cat ~/tmp/alert_fifo ; do : ; done' |
while read icon_name text ; do
notify_send --urgency=low -i "$icon_name" "$text"
done &
次に、2番目のSSHセッションを開いて実際の作業を行うときに、これをバックグラウンドで実行させることができます。
local$ ssh [email protected]
remote$ alias remote_alert='echo ... >~/tmp/alert_fifo'
remote$ long_running_command; remote_alert
…ここでremote_alert
変更されたalert
です notify_send --urgency=low -i
のエイリアス FIFOにエコーするものに置き換えられました。
これは、リモートマシン上の最小限のツールセットで機能します。sshおよび標準のPOSIXユーティリティのみです。ただし、FIFOを使用すると、リーダーの実行を忘れた場合(またはリーダーが停止した場合)、ライターがハングします。したがって、socat
がある場合 利用可能であれば、これをもう少し寛容にすることができます:
local$ ssh [email protected] 'socat UNIX-RECV:~/tmp/alert_socket -' |
while read ...
...
done &
local$ ssh [email protected]
remote$ alias remote_alert='echo ... | socat - UNIX-SEND:~/tmp/alert_socket'