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
Réponses
Trop de publicités?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
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.
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