はじめに#
こんにちは!今回はalertコマンドについて解説します。
alertはシステムに警告音やメッセージを送るコマンドです。スクリプト内で重要なイベントを通知したい時や、システムの異常を管理者に報せたい時に使う、ユーティリティ的なコマンドですね。
BELキャラクター(警告音)を使ったシンプルな通知機能。けっこう便利です。
alertコマンドとは#
alertは、ベル信号(BEL)またはメッセージを出力してシステムに警告を通知する外部コマンドです。
主にスクリプト内で使われ、重要な処理の完了や異常状態を管理者に通知します。ターミナルで警告音を鳴らしたり、デスクトップ環境ではバルーン通知を表示したりできます。実装方法はシステムによって異なります。
基本構文#
主なオプション#
alertは単純なコマンドで、オプションが少ないです。
| オプション |
説明 |
--help |
ヘルプを表示 |
--version |
バージョン情報を表示 |
使用例#
例1: 基本的な警告音#
実行結果:
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
|
実行結果:
エラー時に警告を発します。
例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
|
実行結果:
ログファイルを監視して異常を通知します。
例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"
|
実行結果:
長時間の処理完了を通知します。
例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
|
実行結果:
バッチ処理中のエラーを通知します。
例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
|
実行結果:
ディスク容量を監視して警告を出します。
例8: Cronジョブでの通知#
1
2
|
# crontab 設定
0 3 * * * /home/user/backup.sh && alert "Daily backup completed" || alert "Daily backup FAILED"
|
実行結果:
定期的なジョブの成否を通知します。
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"
自動化スクリプトの友。重要なイベントを見逃しません!