Bashスクリプトでのsleepコマンド活用方法と実践的な使用例

Bashスクリプトを利用する際、さまざまなタスクを自動化できます。その中でも時間の管理や一時停止を行うときに非常に役立つのがsleepコマンドです。特に、ほかのプログラムが終わるのを待つ必要がある場合や、一定の時間ごとに処理を繰り返したい時に有用です。この記事では、sleepコマンドの基本から、実践的な使用例までを徹底解説します。

sleepコマンドの基本

sleepコマンドは、指定した時間だけ処理を一時停止するためのシンプルなコマンドです。書式は以下のようになります。

sleep DURATION

ここで、DURATIONは一時停止する時間を指定します。この時間は、秒(s)、分(m)、時間(h)、日(d)で表すことができます。例えば、sleep 2sは2秒の一時停止を意味し、sleep 1mは1分の一時停止を示します。

基本的な使い方

  1. 秒単位の一時停止

    sleep 5
    echo "5秒経過しました"
    

    上記スクリプトは、5秒間停止した後にメッセージを表示します。

  2. 分単位の一時停止

    sleep 2m
    echo "2分経過しました"
    

    こちらは2分の停止時間が設定されています。

  3. 複数の時間単位の組み合わせ

    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スクリプトにおける時間制御の柔軟な手段を提供します。操作の簡潔さと、複雑なスクリプトでの効果的な使用が可能であるため、多様なシチュエーションで役立ちます。特に、バックアップ、サーバーモニタリング、データ取得など、定期的なタイミングを要する処理において強力な助けとなるでしょう。あなたの次のスクリプト作成において、このコマンドを活用してみてはいかがでしょうか。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする
未分類

コメント

タイトルとURLをコピーしました