Bash
Emplois à des moments précis
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