Recherche…


Exécuter le travail une fois à une heure précise

Remarque: at n'est pas installé par défaut sur la plupart des distributions modernes.

Pour exécuter un travail une fois à un autre moment que maintenant, dans cet exemple, vous pouvez utiliser

echo "somecommand &" | at 5pm

Si vous voulez attraper la sortie, vous pouvez le faire de la manière habituelle:

echo "somecommand > out.txt 2>err.txt &" | at 5pm

at comprendre de nombreux formats de temps, de sorte que vous pouvez également dire

echo "somecommand &" | at now + 2 minutes
echo "somecommand &" | at 17:00
echo "somecommand &" | at 17:00 Jul 7
echo "somecommand &" | at 4pm 12.03.17

Si aucune année ou date n'est donnée, cela suppose la prochaine fois que l'heure spécifiée se produit. Donc, si vous donnez une heure qui a déjà passé aujourd’hui, cela prendra demain, et si vous donnez un mois qui a déjà passé cette année, cela prendra l’année prochaine.

Cela fonctionne également avec Nohup comme vous vous en doutez.

echo "nohup somecommand > out.txt 2>err.txt &" | at 5pm

Il existe d'autres commandes pour contrôler les tâches temporisées:

  • atq liste tous les travaux temporisés ( atq ueue)
  • atrm supprime un travail chronométré ( atr e m ove)
  • batch fait pratiquement la même chose qu'à, mais exécute les travaux uniquement lorsque la charge du système est inférieure à 0,8

Toutes les commandes s'appliquent aux tâches de l'utilisateur connecté. Si vous êtes connecté en tant que root, les tâches système sont bien entendu traitées.

Faire des travaux à des moments spécifiés à plusieurs reprises en utilisant systemd.timer

systemd fournit une implémentation moderne de cron . Pour exécuter un script périodique, un service et un fichier de minuterie sont nécessaires. Les fichiers de service et de temporisation doivent être placés dans / etc / systemd / {system, user}. Le fichier de service:

[Unit]
Description=my script or programm does the very best and this is the description

[Service]
# type is important!
Type=simple
# program|script to call. Always use absolute pathes 
# and redirect STDIN and STDERR as there is no terminal while being executed 
ExecStart=/absolute/path/to/someCommand >>/path/to/output 2>/path/to/STDERRoutput
#NO install section!!!! Is handled by the timer facitlities itself.
#[Install]
#WantedBy=multi-user.target

Suivant le fichier de minuterie:

[Unit]
Description=my very first systemd timer
[Timer]
# Syntax for date/time specifications is  Y-m-d H:M:S 
# a * means "each", and a comma separated list of items can be given too
# *-*-* *,15,30,45:00  says every year, every month, every day, each hour,
# at minute 15,30,45 and zero seconds

OnCalendar=*-*-* *:01:00  
# this one runs each hour at one minute zero second e.g. 13:01:00 


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow