はじめに
Linuxでユーザーが複数のコマンドシーケンスを発行すると、コマンドはすぐに次々に実行されるか、同時に実行されます(たとえば、teeコマンド)。ただし、コマンドの実行を延期し、システムが期待される結果を生成するのに十分な時間を提供する必要がある場合があります。
このチュートリアルでは、Linuxの sleep
の使用方法を学習します ターミナルおよびシェルスクリプトでのコマンド実行を遅らせるコマンド。
前提条件
- Linuxを実行しているシステム
- コマンドラインへのアクセス
Linux sleepコマンドは何をしますか?
スリープ
コマンドは、指定された時間、次のコマンドの呼び出しプロセスを一時停止します。このプロパティは、次のコマンドの実行が前のコマンドの正常な完了に依存している場合に役立ちます。
Linuxsleepコマンド構文の説明
sleep
の構文 コマンドは簡単です:
sleep [number]
上記の例では、 sleep 5
の後 が実行されると、2番目のコマンドプロンプトが5秒遅れて表示されました。
デフォルトでは、システムは sleep
の後に番号を読み取ります 秒数として。他の時間単位を指定するには、次の構文を使用します。
sleep [number][unit]
スリープ
コマンドは浮動小数点数を受け入れます。複数の値を合計して、スリープ
の期間を計算できます。 。
利用可能なユニットは次のとおりです。
-
s
–秒 -
m
–分 -
h
–時間 -
d
–日
スリープ
を停止するには 開始後、指定した待機期間が終了する前に、 Ctrl + C
を押します。 。
sleep
のヘルプを表示するには コマンド、次のように入力します:
sleep --help
バージョンの詳細については、次のように入力してください:
sleep --version
Linuxsleepコマンドの例
次のセクションには、 sleep
の使用例が含まれています ターミナルまたはシェルスクリプトのコマンド。
アラームを設定する
sleep
を使用する 一定時間後にmp3ファイルを再生するようにシステムに指示します。この例ではmplayerを使用しています:
sleep 7h 30m && mplayer alarm.mp3
ターミナルでの遅延コマンド
スリープコード>
2つのコマンドの実行の間に時間を強制するのに役立ちます。次の例では、 echo
を作成します コマンドは1秒間隔で実行されます:
sleep 1 && echo "one" && sleep 1 && echo "two"
sleepコマンドに変数を割り当てる
sleep
に変数を割り当てることができます 指図。次のシェルスクリプトについて考えてみます。
#!/bin/bash
SLEEP_INTERVAL="30"
CURRENT_TIME=$(date +"%T")
echo "Time before sleep: ${CURRENT_TIME}"
echo "Sleeping for ${SLEEP_INTERVAL} seconds"
sleep ${SLEEP_INTERVAL}
CURRENT_TIME=$(date +"%T")
echo "Time after sleep: ${CURRENT_TIME}"
スクリプトは、 SLEEP_INTERVAL
という変数を定義します その値は後でsleep
への引数として使用されます 指図。このサンプルスクリプトの出力は、実行が30秒続いたことを示しています。
チェック間隔の定義
次の例は、 sleep
の使用法を示しています。 Webサイトがオンラインかどうかをチェックするスクリプトのコマンド。スクリプトは、Webサイトに正常にpingを実行し、スリープ
すると停止します。 pingが失敗する間に10秒の遅延が発生します。
#!/bin/bash
while :
do
if ping -c 1 www.google.com &> /dev/null
then
echo "Google is online"
break
fi
sleep 10
done
操作が完了するまでの時間を確保する
他の2つのbashスクリプトを内部的に呼び出すbashスクリプトを実行している可能性があります。1つはバックグラウンドでテストを実行し、もう1つは結果を出力します。 sleep
を使用する 2番目のスクリプトが最初のスクリプトの完了前に実行された場合に、2番目のスクリプトが間違った結果を出力するのを防ぐには:
while kill -0 $BACK_PID ; do
echo "Waiting for the process to end"
sleep 1
done
kill -0 $ BACK_PID
コマンドは、最初のスクリプトのプロセスがまだ実行されているかどうかを確認します。そうである場合は、メッセージを出力し、1秒間スリープしてから、再度確認します。
レイテンシの予測
sleep
を使用する 特定のコマンド実行の待ち時間を許可します。以下のスクリプトスニペットは、スリープ
の方法を示しています 次の反復の前に計算を実行するのに十分な時間をCPUに与えます。
for (( i = 1 ; i <= 250 ; i++ ));
do
sleep 1
qsub computation"${i}".pbs
done