こんにちは、フルスタックエンジニアのryuです。
今回の記事では、Linuxのsleepコマンドについて解説します。
sleepは、指定した時間だけ処理を待機させるためのコマンドです。
一見するとかなり単純なコマンドですが、シェルスクリプトで処理の間隔を空けたり、一定時間ごとに処理を繰り返したりするときによく使います。
この記事では、基本的な使い方から秒・分・時間の指定、シェルスクリプトでの利用例、timeoutとの違いまで解説します。
【Linux】sleepコマンドの使い方解説!¶
sleepコマンドとは?¶
sleepコマンドとは、名前の通りプログラムの実行を一時停止するためのコマンドです。
sleepは、寝るという意味があり、コマンドの実行を寝かせるというイメージで覚えると分かりやすいです。
このコマンドを使用すると、指定した時間だけ次の処理へ進むのを待つことができます。
たとえば、次のコマンドを実行すると5秒間待機します。
sleep 5
5秒経過するとsleepコマンドが終了し、シェルへ操作が戻ります。
何かを5秒後に自動表示するというより、その場所で5秒待ってから次の処理へ進むという動きです。
sleepコマンドの基本的な使い方¶
秒数を指定する¶
最も基本的な書き方は次の通りです。
sleep [時間]
単位を付けずに数値だけを書いた場合は、秒として扱われます。
たとえば、3秒待機する場合は次のように実行します。
sleep 3
コマンドだけでは本当に3秒待っているのか分かりにくいため、dateコマンドと組み合わせると動きを確認できます。
date
sleep 3
date
1回目のdateで現在時刻を表示し、3秒待ったあと、もう一度時刻を表示します。
このように前後へ処理を置くと、sleepがどのように動いているのか理解しやすいです。
【関連記事】Linuxで現在時刻を確認する方法は、Linuxで時刻を確認・変更する方法を解説!date・timedatectl・NTP同期についてでも詳しく解説しています。
sleepコマンドと別のコマンドを順番に実行する¶
sleepは、ほかのコマンドと組み合わせて使うことが多いです。
たとえば、次の例では最初に文字列を表示し、5秒待ってから次の文字列を表示します。
echo "処理を開始します"
sleep 5
echo "5秒経過しました"
実行すると、まず次の文字が表示されます。
処理を開始します
その後5秒待機してから、次のように表示されます。
5秒経過しました
1行で書く場合は、セミコロンでつなぐこともできます。
echo "開始"; sleep 5; echo "終了"
元の記事では、パイプを利用した次のような例を紹介していました。
cat "test" | sleep 5
しかし、この書き方では5秒後にtestという文字列が表示されるわけではありません。
sleepは標準入力を受け取って後から表示するコマンドではないため、処理の実行を遅らせたい場合は、sleepの前後にコマンドを置くと覚えておきましょう。
sleepコマンドで時間の単位を指定する¶
sleepコマンドでは、数値の後ろに単位を付けることもできます。
GNU/Linuxでよく使われるsleepでは、次のような単位があります。
| 単位 | 意味 | 使用例 |
|---|---|---|
s |
秒 | sleep 5s |
m |
分 | sleep 2m |
h |
時間 | sleep 1h |
d |
日 | sleep 1d |
たとえば、5秒待機する場合は次のように実行できます。
sleep 5s
2分待機する場合は次の通りです。
sleep 2m
1時間待機したい場合は、次のように書けます。
sleep 1h
単位を付けなくても秒として動作しますが、シェルスクリプトでは5sや2mのように書くと、あとから見たときに何の時間なのか分かりやすくなります。
小数を指定して1秒未満待機する¶
sleepでは、小数を利用して短い時間を指定できる環境もあります。
たとえば、0.5秒待機する場合は次のように実行します。
sleep 0.5
0.1秒であれば次の通りです。
sleep 0.1
1ミリ秒相当であれば、秒へ変換して次のように指定できます。
sleep 0.001
msという単位を直接書くのではなく、秒を小数で指定するイメージです。
ただし、非常に短い時間を指定した場合、OSのスケジューリングなどの影響もあるため、必ず指定した時間ぴったりに処理が再開されるとは限りません。
シェルスクリプトでsleepを使う¶
処理の途中で待機する¶
sleepコマンドは、シェルスクリプトの中でよく使われます。
たとえば、次のスクリプトでは処理を開始してから5秒待ち、その後に完了メッセージを表示します。
#!/bin/bash
echo "処理を開始します"
# ここに実際の処理を書く
sleep 5
echo "次の処理へ進みます"
外部サービスへアクセスしたあとに少し待機したい場合や、一定時間ごとに状態を確認したい場合などに利用できます。
ただし、何となくsleep 10を入れて問題を回避するのではなく、本当に固定時間の待機が必要なのかを考えることも大切です。
whileと組み合わせて繰り返す¶
sleepはwhileと組み合わせて、一定時間ごとに処理を繰り返すこともできます。
#!/bin/bash
while true; do
date
sleep 10
done
このスクリプトでは、現在時刻を表示し、10秒待機してから再び時刻を表示します。
そのままでは繰り返し続けるため、停止するときはCtrl+Cを押します。
実際の監視処理であれば、次のようにコマンドを置くこともできます。
#!/bin/bash
while true; do
curl -I https://example.com
sleep 60
done
1分ごとにWebサイトへリクエストを送る例です。
実運用では専用の監視ツールやcron、systemd timerなどを利用することも多いですが、sleepの仕組みを理解する例として分かりやすいです。
バックグラウンドでsleepを実行する¶
sleepを実行すると、通常は指定時間が終わるまでターミナルから次のコマンドを入力できません。
sleep 30
30秒待たずに別の操作をしたい場合は、末尾に&を付けてバックグラウンドで実行できます。
sleep 30 &
実行すると、シェルへすぐに操作が戻ります。
バックグラウンドジョブはjobsコマンドで確認できます。
jobs
sleepは、Linuxのプロセスやジョブ制御を学習するときの簡単な練習にも使えます。
たとえば、長めのsleepをバックグラウンドで実行してからpsで確認してみましょう。
sleep 300 &
ps aux | grep sleep
実際にプロセスとしてsleepが動いていることを確認できます。
実行中のsleepを停止する¶
フォアグラウンドで長いsleepを実行してしまった場合は、完了まで待つ必要はありません。
たとえば次のコマンドを実行したとします。
sleep 1h
1時間待つ必要がない場合は、Ctrl+Cで停止できます。
Linuxでは、ターミナルで実行中のプロセスに対してCtrl+Cを押すと、通常は割り込みのシグナルが送られます。
sleepもそこで終了し、シェルへ操作が戻ります。
このようにsleepを使うだけでも、フォアグラウンド、バックグラウンド、プロセス、シグナルといったLinuxの基本につながります。
sleepとtimeoutの違い¶
sleepと似た場面で登場するコマンドにtimeoutがあります。
名前が似ていますが、目的は異なります。
| コマンド | 目的 |
|---|---|
sleep |
指定時間だけ待機する |
timeout |
コマンドの実行時間に上限を設ける |
たとえば、5秒待つだけなら次のコマンドです。
sleep 5
一方、あるコマンドが10秒以上実行されたら終了させたい場合は、次のようにtimeoutを利用できます。
timeout 10s ping 8.8.8.8
sleepは処理を待たせる、timeoutは処理が長くなりすぎないよう制限する、と区別すると分かりやすいです。
sleepとcronの違い¶
定期実行という意味では、cronとの違いも覚えておくと良いです。
sleepをwhileループと組み合わせても定期的な処理は作れますが、シェルを起動し続ける必要があります。
毎日決まった時間にバックアップする、5分ごとにバッチ処理を実行するといった用途では、cronを使う方が適している場合があります。
crontabについては、【関連記事】crontabの設定方法を解説!定期的にジョブを実行させる方法とは?でも詳しく解説しています。
sleepとcronを簡単に分けると、次のようになります。
sleep
→ 今動いている処理の途中で一定時間待つ
cron
→ 指定した時刻や周期で新しい処理を実行する
この違いを理解しておくと、シェルスクリプトを書くときにも使い分けやすくなります。
sleepコマンドを実際に練習してみる¶
sleepは難しいコマンドではありませんが、シェルスクリプトやプロセスを理解する入り口として使いやすいコマンドです。
まずはターミナルで次のコマンドを試してみてください。
echo "start"
sleep 3
echo "end"
次にバックグラウンドでも動かしてみます。
sleep 60 &
jobs
その後、psでプロセスを確認します。
ps aux | grep sleep
コマンドを読むだけではなく、実際に動かすことで、sleepが単に時間を止めるものではなく、Linux上で動作する一つのプロセスだと分かります。
【関連記事】シェルやbashの違いから学びたい方は、shとは?/bin/sh・シェルスクリプト・bashとの違いを初心者向けに解説も参考にしてください。
InfraAcademyでLinuxコマンドを実際に学習する¶
さらにLinuxのコマンドの学習をしたい人に向けて、InfraAcademyというインフラ学習サービスのご紹介です。
Linuxの実践的な内容を学習したい、コマンドを打ちながらLinuxを学習したい。
そのような方に向けて、InfraAcademyではLinuxの教材とブラウザ上の実行環境を組み合わせて学習できるようにしています。

Linuxを基礎から学習したい方は、Linux入門講座をご覧ください。
Linuxサーバーと一緒に必要になるIPアドレスやルーティングは、ネットワーク講座で学習できます。
クラウド上でLinuxを扱ってみたい方は、AWS講座も用意しています。
sleepコマンドのまとめ¶
今回の記事では、Linuxのsleepコマンドについて解説しました。
基本的な使い方はとてもシンプルです。
sleep 5
これで5秒間待機します。
分や時間を指定する場合は、次のように単位を付けられます。
sleep 2m
sleep 1h
シェルスクリプトの途中で待機したり、whileと組み合わせて一定間隔で処理したり、バックグラウンドでプロセスを動かしたりすることもできます。
sleepそのものは簡単ですが、シェルスクリプト、プロセス、ジョブ制御などにもつながるコマンドです。
まずはechoやdateと組み合わせて実際に動かし、どのタイミングで処理が止まり、いつ再開するのか確認してみてください。



