Installé avec le paquet at
Voir aussi : atq, atrm et crontab
Afficher la version de la commande at
at -V
ou
apt-cache policy at
Programmer une action à un instant donné
at date at> command at> Ctrl + D
ex 1 :
# at 11h45 06.12.2016
warning: commands will be executed using /bin/sh
at> echo "Contenu du mail"
at> <EOT>
job 10 at Tue Dec 6 11:45:00 2016
Ceci génère le mail suivant dans /var/mail/adminsys ou /var/spool/mail/adminsys :
From root@snipeit Tue Dec 06 11:45:00 2016 Return-path:Envelope-to: adminsys@snipeit Delivery-date: Tue, 06 Dec 2016 11:45:00 +0100 Received: from root by snipeit with local (Exim 4.84_2) (envelope-from ) id 1cECwi-0000k1-Jt for adminsys@snipeit; Tue, 06 Dec 2016 11:26:00 +0100 Subject: Output from your job 14 To: adminsys@snipeit Message-Id: From: root Date: Tue, 06 Dec 2016 11:26:00 +0100 Contenu du mail
ex 2 :
# at 11:45 AM 12/06/2016 warning: commands will be executed using /bin/sh at> /home/adminsys/test.sh at>job 18 at Wed Dec 6 11:45:00 2016
Le script ci-dessus s’exécutera alors à l’heure et au jour indiqués.
Afficher la liste des travaux programmés
at -l
Les travaux sont listés selon le format de sortie suivant :
numéro de tâche, date, heure, file (par défaut file a) et nom d’utilisateur.
Equivaut à :
atq
ex :
# at -l
19 Wed Dec 7 14:00:00 2016 a root
20 Thu Dec 8 14:00:00 2016 a root
17 Wed Dec 7 11:45:00 2016 a root
21 Fri Dec 9 14:00:00 2016 a adminsys
22 Sat Dec 10 14:00:00 2016 a root
18 Wed Dec 7 11:45:00 2016 a root
Afficher le détail d’un travail programmé
at -c jobnumber
Affiche la commande qui sera exécutée ainsi que ses variables d’environnement.
ex :
# at -c 18
#!/bin/sh
# atrun uid=0 gid=0
# mail adminsys 0
umask 22
XDG_VTNR=7; export XDG_VTNR
XDG_SESSION_ID=1; export XDG_SESSION_ID
USER=root; export USER
MAIL=/var/mail/root; export MAIL
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; export PATH
PWD=/home/adminsys; export PWD
LANG=fr_FR.UTF-8; export LANG
SHLVL=1; export SHLVL
HOME=/root; export HOME
XDG_SEAT=seat0; export XDG_SEAT
LOGNAME=root; export LOGNAME
XAUTHORITY=/var/run/gdm3/auth-for-adminsys-BTIr3a/database; export XAUTHORITY
COLORTERM=gnome-terminal; export COLORTERM
OLDPWD=/root; export OLDPWD
cd /home/adminsys || {
echo 'Execution directory inaccessible' >&2
exit 1
}
/home/adminsys/test.sh
Supprimer un travail programmé
at -r jobnumber
ou
at -d jobnumber
Equivaut à :
atrm jobnumber
ex :
# at -l 19 Wed Dec 7 14:00:00 2016 a root 20 Thu Dec 8 14:00:00 2016 a root 17 Wed Dec 7 11:45:00 2016 a root 21 Fri Dec 9 14:00:00 2016 a adminsys 22 Sat Dec 10 14:00:00 2016 a root 18 Wed Dec 7 11:45:00 2016 a root # at -r 17 # at -d 18 # at -l 19 Wed Dec 7 14:00:00 2016 a root 20 Thu Dec 8 14:00:00 2016 a root 21 Fri Dec 9 14:00:00 2016 a adminsys 22 Sat Dec 10 14:00:00 2016 a root
Programmer un travail à partir d’un fichier de référence
at date -f reffilename
ex :
Si listing.txt contient :
/home/adminsys/test.sh echo "Contenu du mail" /home/adminsys/script.sh
# at 16h00 06.12.2016 -f listing.txt warning: commands will be executed using /bin/sh job 23 at Tue Dec 6 16:00:00 2016 # atq 23 Tue Dec 6 16:00:00 2016 a root
Envoyer un mail à l’utilisateur lorsque le travail est terminé
at -m date at> command at> Ctrl + D
Par défaut, si la commande programmée écrit sur stdout alors un mail sera automatiquement envoyé (booléen mail username à 1).
Avec l’option -m on force l’envoi d’un mail même si aucun retour n’est affiché.
#!/bin/sh
# atrun uid=0 gid=0
# mail adminsys 1
umask 22
XDG_VTNR=7; export XDG_VTNR
[...]
Les formats de dates
at 14h30 25.12.2016 at 14h30 12/25/2016 at 14h30 Dec 25 2016 at 14h30 25 Dec 2016 at 14h30 25 Dec at 14h30 Dec 25 at 14h30 tomorrow at 1430 next month at 2:30 PM at 2:30 PM Fri at next hour # dans une heure exactement at Fri # vendredi prochain à la même heure at noon # au prochain midi at midnight # au minuit prochain at teatime # à l'heure du thé prochaine (16h00) at tomorrow # demain à la même heure at noon tomorrow # demain à midi at next week # la semaine prochaine, le même jour à la même heure at next monday # lundi prochain à la même heure at next month # le mois prochain, le même jour à la même heure at now + 2 days # dans 2 jours à la même heure at now + 3 weeks # dans 3 semaines, le même jour à la même heure at now + 4 months # dans 4 mois, le même jour à la même heure at now + 5 years # dans 5 ans, le même jour à la même heure
Programmer un travail selon une chaine SSAAMMJJhhmm.ss
at -t [[SS]AA]MMJJhhmm[.ss]
ex : Le 25 décembre 2016 à 20h30 et 00 seconde
# at -t 201612252030.00
# at -t 1612252030
# at -t 12252030
Activer/désactiver les crontabs l’accès à la commande at pour les utilisateurs
Pour autoriser un utilisateur à utiliser at, il suffit de créer (s’il n’existe pas) un fichier /etc/at.allow et d’y inscrire le nom de l’utilisateur.
Pour interdire l’accès à at pour un utilisateur, il suffit de créer (s’il n’existe pas) un fichier /etc/at.deny et d’y inscrire le nom de l’utilisateur :
ex :
$ sudo cat /etc/at.deny alias backup bin [...] sync sys www-data adminsys $ at 14h30 You do not have permission to use at.