Commandes Linux : at

AT

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.
Fermer le menu
%d blogueurs aiment cette page :