【linux】sleepコマンドの使用例と注意点を解説

シェル/bash

sleepコマンドの使い方を確認したい人

sleepコマンドの使い方を確認したい人
「linuxで数秒待ってから次の処理を行うのにsleepコマンドの使い方を確認したいです。構文やそのまま使えるような具体例を見せてください。また、ミリ秒での指定も可能ですか?」

こんな悩みを解決します。

この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。

これまでの経験を踏まえ、コマンドの解説に留まらず実務視点で利用方法を記事にしました。お役にたちましたら幸いです。

本記事の内容

1.【基本的な使い方】sleep [待ち時間(秒)]

sleepコマンドを使う際は、待ち時間を秒単位で指定します。

sleep [待ち時間(秒)]

2. 【使用例1】10秒後にコマンドやシェルスクリプトを実行する

以下の例では、dateコマンドを実行し、10秒待ってからもう一度dateコマンドを実行します。

動作は次のようになります。

  • 1. 最初のdateコマンドが実行されて、時刻が表示される
  • 2. sleepのため、10秒間プロンプトが待ち状態になる
  • 3. 再度dateコマンドが実行されて、10秒後の時刻が表示される

実行結果は以下の通りです。

3. 【使用例2】3秒に1回コマンドを実行する

繰り返しコマンドを実行する際にもsleepは役に立ちます。sleepを入れないと、連続実行してしまうからです。

実行結果は以下の通りです。

4.sleepコマンドにオプションはありません

例えば1分、1時間sleepしたい場合にはどうすればいいでしょうか?sleepには分単位・
時間単位で時間指定するためのオプションがないため、秒単位で指定をします。

5.ミリ秒単位でsleepしたいとき

では1秒よりも短いsleepを入れたい場合はどうすればいいでしょうか。答えは、小数点以下で指定することができます。以下の例では、0.1秒間sleepします。

sleepの小数指定は、処理時間の間の調整や極めて短期間の間隔を開けてコマンド実行を繰り返したい時に便利です。

6. 開発・運用業務上の注意点

バッチ処理においてsleepを用いる場合の注意点を幾つか示します。

sleep使用時の注意点1

本当は前提として終わってなくてはならない他のバッチ処理の完了を待ち合わせなくてはならないのに、代替手段としてsleepで時間的なつじつまを合わせた場合、ある日前提となるバッチ処理が遅延して前提が崩れ、突然問題が生じる可能性があります。

sleep使用時の注意点2

「使用例2」で示した方式(whileで回してコマンド実行&sleepをループ)で10秒間隔でコマンド実行したい場合、厳密には10秒間隔ではなく10秒+繰り返すコマンドの実行時間の間隔で処理が行われます。

10秒に1回だと思っているとだんだんとズレていきますので正確に10秒に1回実行したい業務では作りが甘い、という事になります。

おわりに

今回は以上です。sleepの使い方と注意点を解説しました。参考になりましたら幸いです。