Maison  >  Article  >  Opération et maintenance  >  Linux peut-il mettre en veille les threads ?

Linux peut-il mettre en veille les threads ?

青灯夜游
青灯夜游original
2023-03-16 11:02:242235parcourir

Le sommeil peut être retardé. La commande Linux sleep peut être utilisée pour retarder l'action en cours pendant un certain temps. La syntaxe est "sleep [--help] [--version] number[smhd]" par défaut, la commande sleep retardera quelques instants. secondes, mais le suffixe est autorisé à spécifier l'heure. Unités pour spécifier le délai en secondes, minutes, heures ou jours.

Linux peut-il mettre en veille les threads ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

le sommeil peut retarder les discussions.

Introduction à la commande Linux sleep

La commande Linux sleep peut être utilisée pour retarder l'action en cours pendant un certain temps.

Autorisations d'utilisation : tous les utilisateurs.

Syntaxe

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

Description du paramètre :

  • --aide : afficher les informations auxiliaires

  • --version : afficher le numéro de version

  • numéro : durée, peut être suivi de s, m , h Ou d

    où s est la seconde, m est la minute, h est l'heure et d est le nombre de jours

1 Retarder l'exécution de la commande Linux

Par défaut, la commande sleep sera attendez quelques secondes. Pour comprendre cela, affichons l'heure actuelle avant et après l'utilisation de la commande sleep. Par exemple, la commande suivante attend 5 secondes après l'impression de l'heure actuelle pour imprimer à nouveau l'heure :

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

Dans cet exemple, vous devez utiliser un point-virgule (;) pour séparer chaque commande.

Linux peut-il mettre en veille les threads ?

2. Émettez une commande pour attendre N minutes

Généralement, la commande sleep nous permet d'utiliser un suffixe pour spécifier l'unité de temps. Cela peut être exprimé dans la commande sleep en utilisant le suffixe suivant :

.
  • s – en secondes Spécifiez l'unité de temps de l'unité.

  • m – Spécifie l'unité de temps en minutes.

  • h – Spécifie l'unité de temps en heures.

  • d – Spécifiez l'unité de temps en jours.

Donc, ici, nous utiliserons le suffixe 'm' pour dormir pendant 1 minute :

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

3. Laissez la commande dormir pendant X minutes et secondes

En fait, vous pouvez également utiliser plusieurs suffixes dans le commande de sommeil. Dans ce cas, la durée est calculée en additionnant toutes les valeurs.

Pour comprendre cela, dormons 1 minute et 20 secondes en utilisant la commande :

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

Dans l'exemple ci-dessus, deux suffixes différents ont été utilisés. Cependant, le même suffixe peut également être utilisé. Par exemple, vous pouvez utiliser les suffixes 2s et 3s pour dormir pendant 5 secondes. La commande est la suivante :

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

4. Utilisez des nombres à virgule flottante via la commande sleep

De plus, la commande sleep accepte également une virgule flottante. numéro en entrée, vous pouvez donc utiliser cette méthode pour dormir sans une seconde. Par exemple, vous pouvez dormir pendant une demi-seconde en utilisant la valeur 0,5 s :

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

Dans la sortie ci-dessus, vous pouvez voir que la commande date affiche la même valeur pour l'unité de temps en secondes.

De plus, des valeurs à virgule flottante avec d'autres suffixes peuvent également être utilisées. Par exemple, vous pouvez utiliser une valeur de 0,5 m pour dormir pendant 30 secondes :

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

5. Utilisez la commande sleep pour simuler un réveil

Dans les exemples précédents, nous avons principalement présenté comment utiliser la commande sleep pour retarder l'exécution de la commande suivante. Alternativement, vous pouvez utiliser cette astuce pour simuler un réveil.

Alors, utilisez ensuite la commande suivante pour régler l'alarme après 5 secondes :

$ sleep 5; cvlc alarm.mp3

La commande ci-dessus ouvre le fichier alarm.mp3 à l'aide du lecteur multimédia VLC après avoir attendu 5 secondes. Comme toute autre commande Linux, le lecteur multimédia VLC peut être arrêté à l'aide de la combinaison de touches ctrl+c.

Exemples d'utilisation de la commande sleep

Laissez d'abord le programme dormir pendant 30 secondes

D'après le sens littéral, vous devez avoir deviné la fonction de la commande sleep. En termes simples, dormir, c'est laisser le programme prendre un court repos puis continuer à travailler (se reposer, c'est mieux travailler...).

Nous laissons le programme Shell faire une sieste de 30 secondes :

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

Temps de sommeil personnalisé

sleep La commande est simple, mais nous pouvons la personnaliser pour la rendre plus amusante.

De manière générale, la valeur qui suit la commande sleep est utilisée pour représenter le temps. Le temps doit avoir une unité. Si nous ne précisons pas d'unité, quelle est son unité par défaut ?

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

Dans cet exemple, l'unité par défaut est la seconde, ce qui a le même effet que de spécifier l'unité s.

S'il y a des secondes, il devrait aussi y avoir des minutes et des heures. Alors, comment ces unités sont-elles représentées dans le sommeil ?

  • s: représente les secondes

  • m: représente les minutes

  • H: représente les heures

  • d: représente les jours

pour exemple, ce qui devrait être fait si vous voulez que le programme Shell soit dormir 1 minute ?

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

Ensuite, si vous voulez que le programme shell dorme pendant 1 heure, changez simplement l'unité en h. Et si nous voulons que le programme shell dorme pendant 1 minute et 40 secondes ? 1 minute = 60 secondes, 1 minute 40 secondes = 100 secondes, vous pouvez directement mettre l'ordinateur en veille pendant 100 secondes.

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

En fait, dormir est plus prévenant que vous ne le pensez. Vous pouvez le taper directement comme ceci :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn