( sleep 300 ; echo "80" > /sys/class/leds/blue/brightness ) &
Ainsi, votre script continue ou vous restaurez le contrôle immédiatement, tandis qu'une nouvelle tâche en arrière-plan du script démarre, avec deux commandes: sommeil et écho.
L'erreur commune est d'essayer de donner à l'un sleep
ou l' autre echo
ou aux deux ce &
qui ne fonctionnera pas comme prévu. Lancer une série de commandes ()
bien que les génère dans un processus shell séparé, que vous pouvez ensuite envoyer en entier en arrière-plan &
.
À cet esprit, où je l'ai trouvé activement utile. Dans un appareil intégré, je développe l'application principale qui fonctionne avec un chien de garde. Si cela échoue de manière à déclencher la réinitialisation du chien de garde peu de temps après le démarrage, il est difficile de le réparer à distance car le délai entre le démarrage du système d'exploitation et la réinitialisation est assez court, pas assez pour ssh et bloquer le démarrage de l'application. Il me faut donc un moyen de déterminer si le système a redémarré si rapidement et d'introduire un délai si c'est le cas, afin de me donner le temps de le réparer manuellement.
[ -f /tmp/startdelay ] && sleep 30
touch /tmp/startdelay
( sleep 30 ; rm /tmp/startdelay ) &
[ -f /tmp/noautostart ] && exit 0
start_app
Si je me connecte et que touch /tmp/noautostart
l'application principale ne démarre pas. Si le chien de garde se déclenche, rm /tmp/startdelay
il ne sera pas exécuté et la prochaine fois que le système démarrera, il me donnera 30 secondes supplémentaires pour l'arrêter. Sinon, le redémarrage sera rapide, sans délai.