睡眠が遅れる可能性があります。 Linux の sleep コマンドを使用すると、現在のアクションを一定期間遅らせることができます。構文は「sleep [--help] [--version]number[smhd]」です。デフォルトでは、sleep コマンドはしばらく遅延します。遅延を秒、分、時間、または日で指定する単位。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
スリープによりスレッドが遅延する可能性があります。
Linux sleep コマンドの概要
Linux sleep コマンドを使用すると、現在のアクションを一定期間遅らせることができます。
使用権限: すべてのユーザー。
#構文
sleep [--help] [--version] number[smhd]
#--version: バージョン番号の表示
デフォルトでは、sleep コマンドは数秒待ちます。これを理解するために、sleep コマンドを使用する前後の現在時刻を出力してみましょう。たとえば、次のコマンドは現在の時刻を出力し、再度時刻を出力するまで 5 秒待機します。
$ date '+%r'; sleep 5; date '+%r'
#2. N 分間待機するコマンドを発行します
通常、sleep コマンドではサフィックスを使用して次のことを行うことができます。時間単位を指定します。これは、次のサフィックスを使用して sleep コマンドで表現できます:
s – 時間単位を秒単位で指定します。$ date '+%r'; sleep 1m; date '+%r'
3. コマンドを X 分と秒間スリープさせます。
実際には、sleep コマンドで複数のサフィックスを使用することもできます。この場合、期間はすべての値を加算することによって計算されます。
これを理解するために、以下では 1 分 20 秒間スリープするコマンドを使用します。コマンドは次のとおりです:$ date '+%r'; sleep 1m 20s; date '+%r'
$ date '+%r'; sleep 2s 3s; date '+%r'
4. sleep コマンドで浮動小数点数を使用します
#さらに、sleep コマンドは浮動小数点数も入力として受け入れるので、このメソッドを使用して 1 秒未満スリープすることができます。たとえば、0.5 秒の値を使用して 0.5 秒スリープできます。 $ date '+%r'; sleep 0.5s; date '+%r'
さらに、他の接尾辞が付いた浮動小数点値も使用できます。たとえば、30 秒間スリープするには 0.5m の値を使用できます:
$ date '+%r'; sleep 0.5m; date '+%r'
前の例では、sleep コマンドを使用して目覚まし時計をシミュレートします。例では、主に sleep コマンドを使用して次のコマンドの実行を遅らせる方法を紹介しました。あるいは、このトリックを使用して目覚まし時計をシミュレートすることもできます。 それでは、次に次のコマンドを使用して、5 秒後にアラームを設定します。
$ sleep 5; cvlc alarm.mp3
上記のコマンドは、5 秒待った後、VLC メディア プレーヤーを使用してalarm.mp3 ファイルを開きます。他の Linux コマンドと同様に、Ctrl C キーの組み合わせを使用して VLC メディア プレーヤーを停止できます。
sleep コマンドの使用例
最初にプログラムを 30 秒間スリープさせます
文字通りところで、sleep コマンドの機能はもうおわかりいただけたかと思います。簡単に言うと、スリープとはプログラムを少し休ませてから動作を継続することです (休むことは動作を良くするためです...)。 シェル プログラムに 30 秒間仮眠させます:
#睡眠30秒 [roc@roclinux ~]$ sleep 30s #让date命令来监督, 看看是不是真的睡了30秒 [roc@roclinux ~]$ date;sleep 30s; date Thu Feb 25 08:25:17 CST 2016 Thu Feb 25 08:25:47 CST 2016
sleep コマンドはシンプルですが、個人用にカスタマイズできます。カスタマイズしてもっと楽しくしましょう。 一般的に、sleep コマンドに続く値は時間を表すために使用されます。時間には単位が必要です。単位を指定しない場合、デフォルトの単位は何になりますか?
[roc@roclinux ~]$ date; sleep 1; date Thu Feb 25 09:55:47 CST 2016 Thu Feb 25 09:55:48 CST 2016
この例から、デフォルトの単位は秒であり、指定された単位と同じ効果があります。
秒がある場合は、分と時間もあるはずです。では、睡眠ではこれらの単位はどのように表されるのでしょうか?
s: 秒を示します
m: 分を示します
h: 時間を示します
d: 日を意味します
たとえば、シェル プログラムを 1 分間スリープさせたい場合、どうすればよいでしょうか?
[roc@roclinux ~]$ date; sleep 1m; date Thu Feb 25 10:00:43 CST 2016 Thu Feb 25 10:01:43 CST 2016
[roc@roclinux ~]$ date; sleep 100; date Thu Feb 25 10:12:28 CST 2016 Thu Feb 25 10:14:08 CST 2016
実は、睡眠はあなたが思っているよりも重要です。次のように直接入力できます:
#注意: 分钟和秒之间一定要有空格哦 [roc@roclinux ~]$ date; sleep 1m 40s; date Thu Feb 25 10:17:04 CST 2016 Thu Feb 25 10:18:44 CST 2016
这种方法简单、直接,节省了我们不少的思考时间。
在 sleep 中最大的单位是 d(天),如果想表示更长的时间,比如周、月、年的话,那么你只能把它们转换成天来表示了。
# 这样, Shell程序乖乖地沉睡 "一周2小时5分4秒" [roc@roclinux ~]$ date; sleep 7d 2h 5m 4s; date Thu Feb 25 10:17:04 CST 2016 Thu Feb 25 10:18:44 CST 2016
毫秒级睡眠时间可不可以
sleep 命令的默认时间单位是秒,但对于高速运行的程序来说,“秒”还是显得太长了。那 sleep 能不能实现毫秒级的睡眠呢?答案是可以的,例如,我们让 Shell 程序睡眠 3 毫秒:
[roc@roclinux ~]$ time sleep 0.003 real 0m0.004s user 0m0.000s sys 0m0.001s
time 可以通过浮点数的方式实现毫秒级的睡眠,但这里有一点需要注意,即睡眠时间的精度。sleep 命令只能保证 10ms 级别的精度控制,对于小于 10ms 的睡眠时间是存在误差的。实际应用中,如果你对时间精度要求特别高的话,sleep 或许不是一个正确的选择,还是请考虑其他方法吧。
sleep 的过程中 CPU 是否被占用
默认情况下,sleep 的进程是不占用 CPU 时间的,我们可以通过实验来说明这个问题:
[roc@roclinux ~]$ \time sleep 1 0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2560maxresident)k 0inputs+0outputs (0major+200minor)pagefaults 0swaps
看到了吗?0.00user、0.00system、0%CPU 这三个输出项都表明 sleep 是不会耗费 CPU 的计算资源的。
注意:上面使用了\time命令,它指代的是 /usr/bin/time,而不是 Shell 内置的 time 命令。/usr/bin/time 命令可以显示更多的信息,而 Shell 内置的命令做不到这一点。
相关推荐:《Linux视频教程》
以上がLinux のスリープはスレッドを遅延させることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。