107 votes

Comment exécuter un script à une heure précise sur Linux?

J'ai un fichier texte contenant une date et heure spécifique. Je veux pouvoir exécuter un script à l'heure spécifiée dans ce fichier. Comment pourriez-vous y parvenir? Créez un autre script qui s'exécute en arrière-plan (sorte de démon) et vérifie chaque seconde si l'heure actuelle correspond à celle du fichier? Y a-t-il un autre moyen? La machine est un serveur linux, Debian wheezy. Merci d'avance

183voto

Antoni Points 1991

Regardez ce qui suit :

echo "ls -l" | at 07:00

Cette ligne de code exécute "ls -l" à un moment spécifique. C'est un exemple d'exécution d'une tâche (une commande dans mon exemple) à un moment spécifique. "at" est la commande que vous recherchiez vraiment. Vous pouvez lire les spécifications ici :

http://manpages.ubuntu.com/manpages/precise/fr/man1/at.1posix.html http://manpages.ubuntu.com/manpages/xenial/fr/man1/at.1posix.html

23voto

tripleee Points 28746

La commande at existe spécifiquement à cette fin (contrairement à cron qui est destiné à la planification de tâches récurrentes).

at $(cat file)

14voto

Anony Points 164

Cron est bon pour quelque chose qui sera exécuté périodiquement, comme tous les samedis à 4 heures du matin. Il y a aussi anacron, qui fonctionne en cas de coupure de courant, de mise en veille, et ainsi de suite. Ainsi que at.

Mais pour une solution ponctuelle, qui ne nécessite pas de droits root ou autre, vous pouvez simplement utiliser date pour calculer les secondes depuis l'époque de l'heure cible ainsi que l'heure actuelle, puis utiliser expr pour trouver la différence, et sleep autant de secondes.

8voto

julumme Points 2168

Habituellement sous Linux, vous utilisez crontab pour ce type de tâches planifiées. Mais vous devez spécifier l'heure à laquelle vous "configurez le minuteur" - donc si vous voulez le rendre configurable dans le fichier lui-même, vous devrez créer un mécanisme pour le faire.

Mais en général, vous utiliseriez par exemple:

30 1 * * 5 /chemin/vers/script/script.sh

Cela exécuterait le script chaque vendredi à 1h30 (du matin) Ici:

30 représente les minutes

1 représente l'heure

les 2 * suivants sont le jour du mois et le mois (dans cet ordre) et 5 est le jour de la semaine

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X