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

シェル/bash

こんにちは。

普段はIT業界についてのブログを執筆してるエンジニアです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】

今回は、linuxについての解説記事です。

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コマンドを実行します。

% date;sleep 10;date

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

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

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

7月25日 20時59分51秒 JST
7月25日 21時01分01秒 JST

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

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

while true
do
date
sleep 10
done

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

7月25日 21時05分24秒 JST
7月25日 21時05分34秒 JST
7月25日 21時05分44秒 JST
7月25日 21時05分54秒 JST
7月25日 21時06分04秒 JST
7月25日 21時06分14秒 JST
7月25日 21時06分24秒 JST
7月25日 21時06分34秒 JST
(…以降、10秒ごとに繰り返し)

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

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

% sleep 60
% sleep 3600

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

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

% sleep 0.1

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

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

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

sleep使用時の注意点1

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

sleep使用時の注意点2

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

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

おわりに

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

Blog TOP  Linuxコマンドを勉強したい人向け|Linuxの使い方 記事まとめ

Linux&Linuxコマンドを勉強したい人向けの記事もくじ

用語解説・技術一般

  "UNIXとLINUX"の違いについて解説します
  CUIとGUIの違い・特徴について解説します

サーバリソースを確認するコマンドの使い方

  【Linux】CPU使用率を確認する3つの方法を解説します
  【Linux】topコマンドで,CPU消費の原因を特定する方法
  【Linux】ps実行時に-efオプションを付ける理由について
  【Linux】メモリ使用率を確認する|容量・空きの確認も
  【Linux】ディスク容量を確認する|ディスク容量監視も

ファイル操作に関するコマンドの使い方

  【Linux】ファイルの行数をカウントする方法を解説
  【Linux】文字コード変換ならiconvコマンド1択です
  【Linux】/dev/nullを、エンジニアが使う2つの目的
  【Linux】findのexecオプションの使い方とその注意点
  【Linux】findの結果から圧縮ファイルを作るコマンド
  【Linux】hostsの場所はどこ?→/etc/hostsにあります
  【Linux】touchコマンドで,時刻更新&空ファイル作成

Linux管理者用コマンドの使い方

  【Linux】再起動コマンド(shutdown)の使い方と注意点

よく使う便利なコマンドの使い方

  【Linux】改行なしでechoコマンドを使う時の -nオプション
  【Linux】sleepコマンドの使用例と注意点について解説する
  【Linux】rmコマンドでディレクトリを削除する方法を解説
  【Linux】ファイルを削除するコマンド2選【rm以外もあり】
  【Linux】awkの区切り文字を指定する,-Fオプションを解説
  【Linux】sedで文字列の置換をするeオプションを解説する
  【Linux】dateコマンドのフォーマットとその便利な使い方
  【Linux】大文字から小文字に変換する方法【小文字から大文字も】

シェルの便利機能

  【Linux】コマンド履歴を検索する【Ctrl+r】