はじめに

こんにちは!今回はalertコマンドについて解説します。

alertはシステムに警告音やメッセージを送るコマンドです。スクリプト内で重要なイベントを通知したい時や、システムの異常を管理者に報せたい時に使う、ユーティリティ的なコマンドですね。

BELキャラクター(警告音)を使ったシンプルな通知機能。けっこう便利です。

alertコマンドとは

alertは、ベル信号(BEL)またはメッセージを出力してシステムに警告を通知する外部コマンドです。

主にスクリプト内で使われ、重要な処理の完了や異常状態を管理者に通知します。ターミナルで警告音を鳴らしたり、デスクトップ環境ではバルーン通知を表示したりできます。実装方法はシステムによって異なります。

基本構文

1
alert [message]
  • message: 通知メッセージ(オプション)

主なオプション

alertは単純なコマンドで、オプションが少ないです。

オプション 説明
--help ヘルプを表示
--version バージョン情報を表示

使用例

例1: 基本的な警告音

1
alert

実行結果:

1
(ベル音が鳴る、または バルーン通知が表示される)

シンプルに警告信号を送ります。

例2: メッセージ付き通知

1
alert "Backup completed successfully"

実行結果:

1
(ベル音と共に、またはバルーン通知で "Backup completed successfully" と表示)

メッセージを含めた通知を送ります。

例3: エラー発生時の警告

1
2
3
if [ $? -ne 0 ]; then
  alert "Error occurred during backup!"
fi

実行結果:

1
(エラー発生時にアラート)

エラー時に警告を発します。

例4: ログファイルの監視

1
2
3
4
5
tail -f /var/log/syslog | while read line; do
  if [[ $line == *"ERROR"* ]]; then
    alert "ERROR detected: $line"
  fi
done

実行結果:

1
(エラーログが出力されるたびにアラート)

ログファイルを監視して異常を通知します。

例5: 長時間処理の完了通知

1
2
3
4
5
#!/bin/bash
echo "Starting backup..."
tar -czf backup.tar.gz /home/user/documents
echo "Backup completed"
alert "Backup job finished"

実行結果:

1
(バックアップ完了後にアラート)

長時間の処理完了を通知します。

例6: バッチ処理でのエラー検出

1
2
3
4
5
6
for file in *.txt; do
  if ! process_file "$file"; then
    alert "Failed to process: $file"
    break
  fi
done

実行結果:

1
(処理失敗時にアラート)

バッチ処理中のエラーを通知します。

例7: ディスク容量監視

1
2
3
4
5
6
#!/bin/bash
USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')

if [ "$USAGE" -gt 90 ]; then
  alert "Disk usage is critical: ${USAGE}%"
fi

実行結果:

1
(ディスク容量が90%を超えたらアラート)

ディスク容量を監視して警告を出します。

例8: Cronジョブでの通知

1
2
# crontab 設定
0 3 * * * /home/user/backup.sh && alert "Daily backup completed" || alert "Daily backup FAILED"

実行結果:

1
(毎日3時のバックアップ完了/失敗を通知)

定期的なジョブの成否を通知します。

Tips・注意点

ターミナルによって動作が異なる

GUI環境ではバルーン通知が表示される場合があります。

1
2
3
# 確認方法
which alert
alert "Test message"

ベル音が無効の場合

一部のターミナル設定では警告音がオフになっている可能性があります。

1
2
# ベル音を有効化
stty -a | grep bell

リダイレクトとの組み合わせ

標準出力をファイルにリダイレクトする場合の対応。

1
bash script.sh > output.log 2>&1 && alert "Script completed"

SSHセッションでの動作

リモートSSHセッションでは、ローカルマシンには警告が届きません。

1
2
# リモートから通知を受けるには
ssh user@remote "bash script.sh" && alert "Remote job completed"

実践的な使い方

バックアップスクリプトでの使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
BACKUP_DIR="/backup"
SOURCE="/home/user/important"

if tar -czf "$BACKUP_DIR/backup_$(date +%Y%m%d).tar.gz" "$SOURCE"; then
  alert "Backup successful"
else
  alert "Backup FAILED - check immediately!"
  exit 1
fi

バックアップの成否を通知します。

システムモニタリング

1
2
3
4
5
6
7
#!/bin/bash
# メモリ使用率チェック
MEMORY=$(free | grep Mem | awk '{print int($3/$2 * 100)}')

if [ "$MEMORY" -gt 80 ]; then
  alert "Memory usage critical: ${MEMORY}%"
fi

システムリソースの異常を通知します。

デプロイメント自動化

1
2
3
4
5
6
7
8
9
#!/bin/bash
echo "Starting deployment..."

if ./deploy.sh; then
  alert "Deployment successful!"
else
  alert "Deployment FAILED - Rollback initiated"
  ./rollback.sh
fi

デプロイメントの成否を即座に通知します。

まとめ

alertコマンドのポイント:

  • ベル信号またはバルーン通知でアラートを送信
  • シンプル: 引数なしで警告音
  • メッセージ対応: 文字列を指定可能
  • スクリプト向け: 自動化の中での通知に最適
  • 環境依存: GUI環境とサーバーで動作が異なる
  • よく使う組み合わせ: command && alert "success" || alert "failed"

自動化スクリプトの友。重要なイベントを見逃しません!