Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bolehkah linux tidur melambatkan benang?

Bolehkah linux tidur melambatkan benang?

青灯夜游
青灯夜游asal
2023-03-16 11:02:242235semak imbas

Tidur boleh ditangguhkan. Perintah tidur linux boleh digunakan untuk menangguhkan tindakan semasa untuk tempoh masa saat, tetapi akhiran dibenarkan untuk menentukan masa untuk menentukan kelewatan dalam saat, minit, jam atau hari.

Bolehkah linux tidur melambatkan benang?

Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.

tidur boleh melambatkan benang.

Pengenalan arahan tidur Linux

Arahan tidur Linux boleh digunakan untuk menangguhkan tindakan semasa untuk satu tempoh masa.

Kebenaran penggunaan: Semua pengguna.

Sintaks

sleep [--help] [--version] number[smhd]

Penerangan parameter:

  • --bantuan: Paparkan mesej tambahan

  • --versi: Paparkan nombor versi

  • nombor: tempoh masa, diikuti dengan s, m, h atau d

    di mana s ialah saat , m ialah minit, h ialah jam, d ialah bilangan hari

1 Tangguhkan pelaksanaan arahan Linux

Secara lalai, arahan tidur akan menunggu beberapa saat. Untuk memahami perkara ini, mari kita keluarkan masa semasa sebelum dan selepas menggunakan arahan tidur. Sebagai contoh, arahan berikut menunggu 5 saat selepas mencetak masa semasa untuk mencetak masa semula:

$ date '+%r'; sleep 5; date '+%r'

Dalam contoh ini, anda perlu menggunakan koma bertitik (;) untuk memisahkan setiap arahan.

Bolehkah linux tidur melambatkan benang?

2. Keluarkan arahan untuk menunggu N minit

Secara amnya, arahan tidur membenarkan kita menggunakan akhiran untuk menentukan unit masa, ini Ini boleh dinyatakan dalam arahan tidur menggunakan akhiran berikut:

  • s – menentukan unit masa dalam saat.

  • m – Menentukan unit masa dalam minit.

  • h – Menentukan unit masa dalam jam.

  • d – Menentukan unit masa dalam hari.

Jadi, di sini kita akan menggunakan akhiran 'm' untuk tidur selama 1 minit:

$ date '+%r'; sleep 1m; date '+%r'

3. Biarkan arahan tidur selama X minit dan saat

Malah, anda juga boleh menggunakan berbilang akhiran dalam arahan tidur. Dalam kes ini, tempoh dikira dengan menambah semua nilai.

Untuk memahami perkara ini, mari tidur selama 1 minit dan 20 saat menggunakan arahan:

$ date '+%r'; sleep 1m 20s; date '+%r'

Dalam contoh di atas, dua akhiran berbeza digunakan. Walau bagaimanapun, akhiran yang sama juga boleh digunakan. Sebagai contoh, anda boleh menggunakan akhiran 2s dan 3s untuk tidur selama 5 saat Perintahnya adalah seperti berikut:

$ date '+%r'; sleep 2s 3s; date '+%r'

4. Gunakan nombor titik terapung melalui arahan tidur

Selain itu, arahan tidur juga menerima A float diambil sebagai input, jadi anda boleh tidur kurang dari satu saat menggunakan kaedah ini. Sebagai contoh, anda boleh tidur selama setengah saat menggunakan nilai 0.5s:

$ date '+%r'; sleep 0.5s; date '+%r'

Dalam output di atas, anda boleh melihat bahawa arahan tarikh menunjukkan nilai yang sama untuk unit masa saat.

Selain itu, nilai titik terapung dengan akhiran lain juga boleh digunakan. Contohnya, anda boleh menggunakan nilai 0.5m untuk tidur selama 30 saat:

$ date '+%r'; sleep 0.5m; date '+%r'

5 Gunakan arahan tidur untuk mensimulasikan jam penggera

Dalam contoh sebelumnya, kami terutamanya memperkenalkan Cara menggunakan arahan tidur untuk menangguhkan pelaksanaan arahan seterusnya. Sebagai alternatif, anda boleh menggunakan helah ini untuk mensimulasikan jam penggera.

Jadi, seterusnya gunakan arahan berikut untuk menetapkan penggera selepas 5 saat:

$ sleep 5; cvlc alarm.mp3

Arahan di atas membuka fail alarm.mp3 menggunakan pemain media VLC selepas menunggu selama 5 saat. Sama seperti arahan Linux yang lain, pemain media VLC boleh dihentikan menggunakan kombinasi kekunci ctrl+c.

Contoh penggunaan arahan tidur

Biarkan program tidur selama 30 saat dahulu

Secara literal Dengan cara ini, anda mesti meneka fungsi arahan tidur. Ringkasnya, tidur adalah untuk membiarkan program berehat sebentar dan kemudian terus bekerja (berehat adalah untuk bekerja dengan lebih baik...).

Kami membiarkan program Shell tidur sebentar selama 30 saat:

#睡眠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

Pemperibadian masa tidur

Arahan tidur adalah mudah, tetapi kita boleh menyesuaikannya Peribadikan untuk menjadikannya lebih menyeronokkan.

Secara umumnya, nilai mengikut arahan tidur digunakan untuk mewakili masa mesti mempunyai unit Jika kita tidak menentukan unit, apakah unit lalainya.

[roc@roclinux ~]$ date; sleep 1; date
Thu Feb 25 09:55:47 CST 2016
Thu Feb 25 09:55:48 CST 2016

Daripada contoh ini, unit lalai ialah saat, yang mempunyai kesan yang sama seperti menentukan unit s.

Jika ada saat, mesti ada juga minit dan jam Jadi bagaimana unit ini diwakili dalam tidur?

  • s: menunjukkan saat

  • m: menunjukkan minit

  • h: menunjukkan jam

  • d: bermaksud hari

Contohnya, jika anda mahu program Shell tidur selama 1 minit, apakah yang perlu anda lakukan?

[roc@roclinux ~]$ date; sleep 1m; date
Thu Feb 25 10:00:43 CST 2016
Thu Feb 25 10:01:43 CST 2016

Jika anda mahu program shell tidur selama 1 jam, cuma tukar unit kepada h. Bagaimana jika kita mahu program shell tidur selama 1 minit dan 40 saat? 1 minit = 60 saat, 1 minit 40 saat = 100 saat, anda boleh terus tidurkan komputer selama 100 saat.

[roc@roclinux ~]$ date; sleep 100; date
Thu Feb 25 10:12:28 CST 2016
Thu Feb 25 10:14:08 CST 2016

Sebenarnya, tidur lebih bertimbang rasa daripada yang anda fikirkan Anda boleh menaipnya terus seperti ini:

#注意: 分钟和秒之间一定要有空格哦
[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视频教程

Atas ialah kandungan terperinci Bolehkah linux tidur melambatkan benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn