Sous Linux, l'attente et l'hibernation sont des concepts très importants. Ils peuvent nous aider à optimiser les ressources système et à améliorer les performances des programmes. Cependant, dans la programmation réelle, nous devons parfois laisser le programme « dormir » pendant un certain temps ou attendre la fin de certaines opérations avant de continuer. Dans cet article, nous présenterons en détail la méthode d'attente pour hiberner sous Linux, afin que vous puissiez mieux comprendre ses principes et son utilisation.
Commande de veille
La commandesleep fera une pause pendant la durée spécifiée. Il est couramment utilisé dans les scripts, mais fonctionne également en ligne de commande. Dans l'exemple ci-dessous, sleep fait une pause de 30 secondes entre deux commandes de date.
[root@localhost ~]# date ; sleep 30 ; date Thu Nov 11 05:06:44 EST 2021 Thu Nov 11 05:07:14 EST 2021
La commande sleep prend un argument numérique comme nombre de secondes. Mais vous pouvez aussi le faire dormir à des heures différentes en ajoutant un caractère dans le paramètre :
[root@localhost ~]# date ; sleep 10s ; date Thu Nov 11 05:11:09 EST 2021 Thu Nov 11 05:11:19 EST 2021
Le temps de sommeil peut également être inférieur à 1 seconde, il suffit d'ajouter un .
.
[root@localhost ~]# date ; sleep .1 ; date Thu Nov 11 05:14:03 EST 2021 Thu Nov 11 05:14:03 EST 2021
sleep est généralement utilisée pour exécuter une commande périodiquement, par exemple toutes les 10 secondes ou toutes les minutes, lorsque vous souhaitez surveiller une activité. Par exemple, vous attendez peut-être qu’un collègue se connecte à un serveur de fichiers. Vous pouvez exécuter une commande comme celle-ci :
[root@localhost ~]# while true ; do who ; sleep 100 ; done
Vous pouvez observer des changements dans l'utilisation de la mémoire.
[root@localhost ~]# while true ; do free -h ; sleep 5 ; done
Commande d'attente
La commandewait capture l'état de sortie du processus en arrière-plan après avoir attendu la fin du processus en arrière-plan. Vous pouvez également l'utiliser dans des scripts. Remplacez la commande sleep par le processus que vous souhaitez attendre. Ce script affiche également l'état de sortie.
#!/bin/bash sleep 5 & process_id=$! echo “PID: $process_id” wait $process_id echo “Exit status: $?”
La première ligne démarre la commande sleep en arrière-plan. La deuxième ligne obtient l'ID de processus du processus en arrière-plan le plus récemment exécuté$!
. Le script affiche ensuite ces informations, attend la fin du processus et affiche l'état de sortie.
Si vous utilisez wait -n (aucun paramètre supplémentaire requis), wait attendra la fin des tâches en arrière-plan. Dans l'exemple ci-dessous, la commande sleep 6 se termine en premier et le script se termine, mais les deux autres processus sleep continueront de s'exécuter en arrière-plan pendant quelques secondes.
#!/bin/bash sleep 15 & sleep 9 & sleep 6 & wait -n echo “First job has been completed.”
Si vous le remplacez par le script suivant, il vous indiquera quand chaque processus de sommeil est terminé. En raison du timing, cela se produira dans l’ordre inverse du début du processus de sommeil.
#!/bin/bash sleep 15 & sleep 9 & sleep 6 & wait -n echo “First job has been completed.” wait -n echo “Next job has been completed.” wait echo “All jobs have been completed.”
Remarque : le processus d'attente doit être un "processus enfant" (un processus démarré dans le shell actuel).
En bref, l'attente et l'hibernation sont des fonctions très pratiques dans les systèmes Linux, qui peuvent nous aider à économiser les ressources système et à améliorer les performances des programmes. Dans cet article, nous présentons 5 méthodes d'attente courantes sous Linux et effectuons une analyse détaillée de leur utilisation, de leurs avantages et de leurs inconvénients. J'espère que grâce à l'introduction de cet article, vous pourrez mieux maîtriser ces technologies d'attente et de veille et les utiliser de manière flexible dans la programmation réelle.
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!