Réponses:
at -c jobnumber
listera un seul travail. Si vous voulez tous les voir, 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 le faire, j'ai juste sorti ça de ma tête :)
awk
,atq | awk '{ system("at -c " $1) }'
En s'appuyant sur les réponses précédentes, cette option répertorie la ligne de chaque travail en atq
indiquant le numéro du travail et l'heure planifiée, puis uniquement la commande à exécuter, triée par ordre chronologique (plutôt que le numéro du travail):
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
produire, 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éé une commande atqc
pour cela ("atq with command"). Une fonction bash. Exécutez ceci sur la ligne de commande bash (commande terminal). Ou mettez-le dans le ~/.bashrc
fichier pour le rendre disponible pour plus tard:
atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }
Essaye-le:
atqc
Cela fonctionne pour RHEL7 avec la at -V
version 3.1.13.
Ubuntu 16.04 avec la at -V
version 3.1.18 a un format de sortie légèrement différent at -c N
, ainsi cela fonctionne sur mon serveur Ubuntu:
atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $1"';}
at -c $(atq | cut -f 1)
oufor each in $(atq | cut -f 1)
évitera les erreurs "Impossible de trouver jobid". (En outre, Bash n’afor ((each=1; each<=MAXJOB; each++))
pas besoin de rienseq
. Si vous êtes préoccupé par la portabilité, alors#!/bin/sh
.)