Présentation
Le at
La commande est un utilitaire de ligne de commande Linux utilisé pour planifier une tâche pour une exécution ultérieure. L'utilitaire lit les commandes à partir de l'entrée standard et les regroupe dans un at
tâche, qui ne s'exécute qu'une seule fois.
L'alternative à at
est une tâche cron. Cependant, alors que at
les tâches ne s'exécutent qu'une seule fois, les tâches cron sont des événements récurrents.
Dans ce didacticiel, vous apprendrez à utiliser le at
commande et voir des exemples utiles pour la planification des commandes.
Prérequis
- Un système exécutant Linux.
- Un compte utilisateur avec des privilèges sudo.
Installer la commande at
Selon la distribution Linux que vous utilisez, le at
la commande n'est peut-être pas préinstallée.
Vérifiez si at
est installé en saisissant le nom de la commande dans le terminal :
Si l'utilitaire n'est pas préinstallé, le message de sortie indique Command 'at' not found .
Installer sur Ubuntu et Debian
Suivez les étapes ci-dessous pour installer at
sur Ubuntu ou Debian :
1. Mettez à jour le référentiel de packages :
sudo apt update
2. Installez le at
commande en lançant :
sudo apt install at
Installer sur CentOS et Fedora
Suivez les étapes ci-dessous pour installer at
sur CentOS ou Fedora :
1. Mettez à jour le référentiel de packages :
sudo yum -y update
2. Exécutez la commande suivante pour installer at
:
sudo yum install at
Activer le démon de planification
Le démon de planification s'exécute en arrière-plan et exécute les tâches planifiées à temps.
Exécutez la commande suivante après avoir installé le at
package pour activer le atd
démon de planification et configurez-le pour qu'il démarre au démarrage du système.
sudo systemctl enable --now atd
Linux au niveau de la syntaxe et des options de commande
La syntaxe du at
la commande est :
at [option] runtime
Les options vous permettent d'afficher ou de supprimer des tâches planifiées et de personnaliser at
planification des travaux de commande. Les options disponibles sont :
Option | Description |
---|---|
-V | Imprime le numéro de version du programme sur la sortie standard. |
-q [queue] | Utilise le [queue] spécifié composé d'une seule lettre, allant de a -z et A -Z . Le a la file d'attente est la valeur par défaut pour at et le b la file d'attente est la valeur par défaut pour batch . Les files d'attente avec des lettres plus élevées fonctionnent avec une gentillesse accrue. La soumission d'un travail à une file d'attente avec une lettre majuscule traite le travail comme soumis à batch . Le batch les règles de charge moyenne s'appliquent une fois qu'il est temps d'exécuter le travail. Nommer une file d'attente pour atq l'amène à afficher uniquement les travaux en attente dans cette file d'attente. |
-m | Envoie un e-mail à l'utilisateur une fois le travail terminé, même s'il n'y a pas eu de sortie. Nécessite une adresse e-mail configurée pour l'utilisateur qui a planifié la tâche. |
-f [file] | Lit le travail à partir du [file] spécifié plutôt qu'à partir de l'entrée standard. |
-b | Un alias pour batch . Planifie les travaux et les exécute dans un batch file d'attente lorsque la moyenne du niveau de charge du système est inférieure à 1,5. |
-l | Un alias pour atq . Répertorie les travaux en attente de l'utilisateur. Si l'utilisateur est un superutilisateur, répertorie tous les travaux en attente des utilisateurs. |
-d | Un alias pour atrm . Supprime les tâches planifiées, identifiées par leur numéro de tâche. |
-v | Affiche le temps d'exécution du travail avant de lire le travail. Le format de l'heure est Thu Feb 20 14:50:00 1997 . |
-c | Cats le travail spécifié, montrant son contenu dans la sortie de ligne de commande standard. |
-t [time_arg] | Planifie une tâche pour l'heure spécifiée par le [time_arg] argument. Le format d'heure accepté est [[CC]YY]MMDDhhmm . |
[runtime]
Expressions temporelles
Planifiez une tâche à l'aide d'expressions temporelles absolues ou d'expressions temporelles relatives à l'heure de définition de la tâche.
Les expressions de temps absolu disponibles sont :
YYMMDDhhmm[.ss]
. Spécifiez une année, un mois, un jour, une heure, une minute et éventuellement des secondes abrégés.CCYYMMDDhhmm[.ss]
. Spécifiez une année complète, un mois, un jour, une heure, une minute et éventuellement des secondes.now
. Indique le jour et l'heure actuels et l'exécution immédiate.midnight
. Indique 00h00.noon
. Indiquant 12h00.teatime
. Interprété comme 16 h 00.AM
. Indique l'heure avant 12h00.PM
. Indique l'heure après 12h00.today
. Le jour actuel.tomorrow
. Le lendemain du jour actuel.
Par exemple, la commande suivante planifie un appel de commande echo à 17h :
echo "hello" | at 5PM
Spécifiez une expression de temps relatif en ajoutant un signe plus (+
), le montant et l'un des éléments suivants :
minutes
hours
days
weeks
months
years
Utilisation d'expressions temporelles telles que tomorrow
ou tuesday
, planifie les tâches de ces jours à l'heure actuelle. Précisez davantage l'heure à l'aide du +
caractère.
Par exemple, la commande suivante planifie un echo
appel de la commande cinq minutes après la planification de la tâche :
echo "hello" | at now +5 minutes
Environnement
Le SHELL
la valeur de la variable d'environnement détermine dans quel shell (bash, zsh, etc.) le at
commande utilise pour exécuter le travail. Lors de la planification du travail, la commande avertit l'utilisateur du shell qu'elle utilisera lors de l'exécution.
Linux et exemples de commandes
La section suivante montre at
utile exemples de commandes.
Planifier une tâche de manière interactive
Le at
La commande vous permet de planifier une tâche à l'aide de la commande interactive at
rapide. Ouvrez l'invite interactive en utilisant la syntaxe suivante :
at [runtime]
L'invite interactive vous permet d'entrer les commandes à exécuter à l'heure spécifiée. La commande affiche également un avertissement indiquant quel shell la commande utilisera.
Quittez l'invite interactive et enregistrez la tâche planifiée en appuyant sur Ctrl + D . Annulez la tâche avec Ctrl + C .
Par exemple :
Dans l'exemple ci-dessus, nous avons planifié une tâche pour 17 h 00, ce qui ouvre l'invite interactive. La tâche planifiée consiste à exécuter le echo
et l'utilitaire utilise le shell bash standard.
Dirigez une tâche vers à
Planifier une tâche sans le at
interactif invite en redirigeant les commandes vers at
et en spécifiant le temps d'exécution. Utiliser echo
ou printf pour passer les commandes à at
.
Par exemple :
echo "command_to_run" | at [runtime]
Pour programmer un at
travail qui envoie le echo
sortie de la commande dans un fichier, utilisez :
echo "hello" >> example.txt | at now
Utilisez la commande cat pour vérifier si le fichier existe afin de vous assurer que la tâche a été exécutée :
cat example.txt
Afficher une tâche planifiée
Le -c
L'option affiche le contenu d'une tâche précédemment planifiée. L'option est utile si vous oubliez ce qu'était le travail ou si vous souhaitez vérifier l'heure planifiée.
Voir le contenu d'un at
programmé travail en utilisant la syntaxe suivante :
at -c [job_number]
Obtenez le numéro de travail en exécutant atq
commande d'abord pour lister tous les travaux en attente.
Par exemple :
Dans l'exemple ci-dessus, nous avons d'abord demandé une liste de tous les travaux en attente pour obtenir les numéros de travail, puis affiché le contenu du travail 14 dans la sortie standard.
Répertorier les tâches planifiées
Le at
L'utilitaire vous permet de vérifier quels travaux sont toujours dans la file d'attente et en attente d'exécution. Il existe deux façons de voir les tâches en attente :
- Exécuter
atq
commande. - Utilisez le
-l
option.
Par exemple :
at -l
La sortie affiche le numéro de travail en attente, la date, l'heure, l'année et la file d'attente pour l'utilisateur actuel. Pour répertorier les tâches en attente de tous les utilisateurs, exécutez la commande avec sudo
.
sudo atq
Dans l'exemple ci-dessus, en exécutant atq
affiche les tâches en attente uniquement pour l'utilisateur actuel. Exécution de atq
avec sudo
affiche les tâches en attente pour tous les utilisateurs.
Envoyer une notification par e-mail lors de l'exécution
Le at
L'utilitaire envoie par défaut des notifications par e-mail sur les travaux terminés. Les notifications par e-mail nécessitent une adresse e-mail fonctionnelle configurée pour votre compte d'utilisateur et le système doit pouvoir envoyer des e-mails.
Pour instruire at
pour envoyer des notifications par e-mail à la fin du travail, même s'il n'y a pas de sortie, spécifiez le -m
option.
Par exemple :
rm example.txt | at -m tomorrow
La commande ci-dessus planifie le travail pour l'heure actuelle demain. Une fois terminé, le at
l'utilitaire informe l'utilisateur en utilisant l'adresse e-mail configurée pour l'utilisateur bosko .
Exécuter des tâches sans notification
Pour éviter de recevoir des notifications par e-mail sur les travaux terminés, spécifiez le -M
option lors de la planification d'un at
travail.
Par exemple :
echo "shutdown -h now" | at -M 00:00
Dans l'exemple ci-dessus, nous avons planifié un arrêt du système à minuit et utilisé le -M
option pour empêcher l'utilitaire d'envoyer la notification par e-mail.
Supprimer une tâche planifiée
Pour supprimer at
programmé emplois, spécifiez le -r
ou exécutez l'option atrm
commande avec l'ID du travail. Obtenez l'ID de travail en exécutant atq
ou en utilisant le -l
option.
Dans l'exemple suivant, nous avons supprimé la tâche 12 :
Restreindre les utilisateurs
Le at
le paquet utilise deux fichiers pour restreindre at
et batch
accès aux commandes :
/etc/at.allow
/etc/at.deny
Modifiez les fichiers pour autoriser uniquement certains utilisateurs à créer, supprimer ou afficher at
en attente emplois. Les fichiers sont une liste de noms d'utilisateur qui peuvent ou ne peuvent pas accéder à at
commandes. Un caractère de saut de ligne sépare les noms d'utilisateur et les espaces blancs ne sont pas autorisés.
Important :Si le /etc/at.allow
fichier existe, seuls les utilisateurs qui y sont répertoriés sont autorisés à utiliser at
ou batch
, et le /etc/at.deny
le fichier est ignoré. Si le /etc/at.allow
le fichier n'existe pas, les utilisateurs répertoriés dans /etc/at.deny
ne sont pas autorisés à utiliser at
ou batch
. L'utilisateur root peut toujours exécuter at
commandes, quels que soient les fichiers de contrôle d'accès.
Modifiez le /etc/at.deny
fichier avec les privilèges sudo pour refuser à un utilisateur l'accès à at
commandes. Dans l'exemple suivant, nous avons modifié le fichier à l'aide de l'éditeur vi :
sudo vi /etc/at.deny
Après avoir ajouté un nom d'utilisateur à la liste, exécutez le at
La commande utilisant le compte d'utilisateur restreint génère le message suivant :
Exécuter les tâches lorsque la charge du système le permet
Le batch
commande (-b
option) planifie un at
tâche à exécuter lorsque la charge moyenne du système tombe en dessous de 1,5. L'exécution de tâches lorsque la charge du système est faible évite la consommation de toutes les ressources système et garantit un fonctionnement optimal du système.
Par exemple, la tâche suivante s'exécute dès que la charge du système descend en dessous de 1,5 :
batch
echo "Hello world!" >> hello.txt