Bashスクリプトを利用する際、さまざまなタスクを自動化できます。その中でも時間の管理や一時停止を行うときに非常に役立つのがsleep
コマンドです。特に、ほかのプログラムが終わるのを待つ必要がある場合や、一定の時間ごとに処理を繰り返したい時に有用です。この記事では、sleep
コマンドの基本から、実践的な使用例までを徹底解説します。
sleepコマンドの基本
sleep
コマンドは、指定した時間だけ処理を一時停止するためのシンプルなコマンドです。書式は以下のようになります。
sleep DURATION
ここで、DURATION
は一時停止する時間を指定します。この時間は、秒(s)、分(m)、時間(h)、日(d)で表すことができます。例えば、sleep 2s
は2秒の一時停止を意味し、sleep 1m
は1分の一時停止を示します。
基本的な使い方
-
秒単位の一時停止
sleep 5 echo "5秒経過しました"
上記スクリプトは、5秒間停止した後にメッセージを表示します。
-
分単位の一時停止
sleep 2m echo "2分経過しました"
こちらは2分の停止時間が設定されています。
-
複数の時間単位の組み合わせ
sleep 1h30m echo "1時間30分後"
上記の例は1時間30分の一時停止を行います。
実践的な使用例
sleep
コマンドは簡単な休止を設定するだけでなく、スクリプトの流れを制御する際に役立ちます。
例1: バックアップスクリプトでの使用
ファイルのバックアップを深夜に行いたいが、1時間ずつ停止し、異なるディレクトリを順にバックアップするスクリプトが必要なときに利用できます。
#!/bin/bash
DIRECTORIES=("/home/user/documents" "/home/user/photos" "/home/user/videos")
for DIR in "${DIRECTORIES[@]}"; do
TARFILE="/backups/$(basename ${DIR})-$(date +%F).tar.gz"
tar -czf $TARFILE $DIR
echo "バックアップを完了しました: $TARFILE"
sleep 1h
done
このスクリプトは指定されたディレクトリリストを一時間ごとにバックアップしています。
例2: Webサーバーの状態チェック
一定間隔でサーバーの応答を確認し、応答がない場合にアラートを送信するスクリプトです。
#!/bin/bash
URL="http://example.com"
while true; do
if ! curl -s --head $URL | grep "200 OK" > /dev/null; then
echo "サーバーがダウンしています" | mail -s "サーバーアラート" admin@example.com
fi
sleep 10m
done
このスクリプトは、10分
ごとにウェブサーバーのステータスをチェックし、返答がない場合には管理者に通知します。
例3: データ取得のインターバル調整
APIからデータを取得する際に、リクエストの間に休止を挟むときに有効です。
#!/bin/bash
API_ENDPOINT="https://api.example.com/data"
for ((i=0; i<5; i++)); do
curl -s $API_ENDPOINT > data_$i.json
echo "データを取得しました: data_$i.json"
sleep 5s
done
このスクリプトは、APIから連続して5件のデータを5秒ごとに取得しています。
結論
sleep
コマンドは、Bashスクリプトにおける時間制御の柔軟な手段を提供します。操作の簡潔さと、複雑なスクリプトでの効果的な使用が可能であるため、多様なシチュエーションで役立ちます。特に、バックアップ、サーバーモニタリング、データ取得など、定期的なタイミングを要する処理において強力な助けとなるでしょう。あなたの次のスクリプト作成において、このコマンドを活用してみてはいかがでしょうか。
コメント