Comment puis-je exécuter une commande après X secondes sans sommeil. Ou avec sommeil mais sans le shell attend juste la réponse de cette commande?
J'ai utilisé ça mais ça n'a pas marché
sleep 5 ; ls > a.txt
J'ai besoin de l'exécuter en arrière-plan. J'essaye de ne pas avoir à l'exécuter dans un script j'essaie d'exécuter ls
après 5 secondes, et le shell n'attend pas seulement la fin du sommeil
command-line
shell
sleep
Martin
la source
la source
;
?Réponses:
Une façon plus concise d'écrire ce que Hennes a suggéré est
Alternativement, si vous avez besoin de plus de quelques secondes, vous pouvez utiliser
at
. Il existe trois façons de donner une commande àat
:Tuyau:
Enregistrez la commande que vous souhaitez exécuter dans un fichier texte, puis passez ce fichier à
at
:Vous pouvez également passer des
at
commandes depuis STDIN:Appuyez ensuite sur CtrlDpour quitter le
at
shell. Lals
commande sera exécutée en une minute.Vous pouvez donner des heures très précises au format
[[CC]YY]MMDDhhmm[.ss]
, comme dansCela exécutera le script
script.sh
à 21h34 et 12 secondes le 18 décembre 2014. Donc, en théorie, vous pourriez utiliserat
pour exécuter quelque chose cinq secondes à l'avenir. Cependant, c'est un peu comme utiliser un tank pour écraser une mouche, et la suggestion de Hennes est meilleure.la source
$(sleep 5; echo foo) &
je ne sais pas pourquoi je pensais que j'avais besoin d'un $ devant cela, mais avec ma syntaxe erronée, je viens de publier la version plus longue (et plus compréhensible). (command_for_in_new_shell) est cependant plus court.at
avec un retard en quelques secondes?at 21:43
) si c'est ce que vous voulez, ou faites simplement quelque chose de simple commesleep 4 && command
exécutercommand
après 4 secondes.Vous pouvez contourner ce problème en démarrant un shell ou un script en arrière-plan.
Exemple:
la source