J'ai une boîte Debian avec quelques tâches programmées en utilisant at
. Je sais que je peux dresser la liste des emplois et de leurs durées à l'aide de atq
mais existe-t-il un moyen d'imprimer leur contenu, à moins de jeter un coup d'œil dans le fichier /var/spool/cron/atjobs
?
Réponses
Trop de publicités?at -c jobnumber
énumérera un seul travail. Si vous voulez les voir tous, vous pouvez créer un script comme
#!/bin/bash
MAXJOB=$(atq | head -n1 | awk '{ print $1; }')
for each in $(seq 1 $MAXJOB); do echo "JOB $each"; at -c $each; done
Il y a probablement un moyen plus court de faire cela, je l'ai juste sorti de ma tête :)
En s'appuyant sur les réponses précédentes, cette liste énumère la ligne de chaque emploi à partir de atq
qui indique le numéro de la tâche et l'heure prévue, puis la commande à exécuter, classée par ordre chronologique (plutôt que par numéro de tâche) :
for j in $(atq | sort -k6,6 -k3,3M -k4,4 -k5,5 |cut -f 1); do atq |grep -P "^$j\t" ;at -c "$j" | tail -n 2; done
produisant, par exemple
48 Fri Mar 10 15:13:00 2017 a root
/usr/local/bin/a-command
47 Fri Mar 10 15:14:00 2017 a root
/usr/local/bin/another-command
J'ai créé la commande atqc
pour cela ("atq with command"). Une fonction bash. Exécutez-la sur la ligne de commande bash (commande de terminal). Ou mettez-la dans le fichier ~/.bashrc
pour le rendre disponible ultérieurement :
atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }
Testez-le :
atqc
Cela fonctionne pour RHEL7 avec at -V
version 3.1.13.
Ubuntu 16.04 avec at -V
La version 3.1.18 a un format de sortie légèrement différent en at -c N
Sur mon serveur Ubuntu, cela fonctionne :
atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $1"';}