Antworten:
at -c jobnumberlistet einen einzelnen Job auf. Wenn Sie alle anzeigen möchten, erstellen Sie möglicherweise ein Skript wie
#!/bin/bash
MAXJOB=$(atq | head -n1 | awk '{ print $1; }')
for each in $(seq 1 $MAXJOB); do echo "JOB $each"; at -c $each; done
Wahrscheinlich gibt es einen kürzeren Weg, das habe ich gerade aus meinem Kopf geholt :)
awk,atq | awk '{ system("at -c " $1) }'
Aufbauend auf früheren Antworten werden in dieser Liste für jeden Auftrag atqdie Auftragsnummer und die geplante Zeit sowie nur der auszuführende Befehl aufgelistet, und zwar chronologisch sortiert (anstelle der Auftragsnummer):
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
Produzieren, z
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
Ein viel einfacherer Ansatz:
for j in $(atq | cut -f 1); do at -c "$j"; done
Sie können sich auch nacheinander die einzelnen lessElemente ansehen , was möglicherweise klarer ist:
for j in $(atq | cut -f 1); do at -c "$j" | less; done
Ich habe dafür einen Befehl erstellt atqc("atq with command"). Eine Bash-Funktion. Führen Sie dies in der Bash-Befehlszeile aus (Terminal-Befehl). Oder legen Sie es in die ~/.bashrcDatei, um es später zur Verfügung zu stellen:
atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }
Probier es aus:
atqc
Das funktioniert für RHEL7 mit at -VVersion 3.1.13.
Ubuntu 16.04 mit at -VVersion 3.1.18 hat ein etwas anderes Ausgabeformat. at -c NAuf meinem Ubuntu-Server funktioniert das folgendermaßen:
atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $1"';}
at -c $(atq | cut -f 1)oderfor each in $(atq | cut -f 1)vermeidet "Kann jobid nicht finden" -Fehler. (Auch Bash hatfor ((each=1; each<=MAXJOB; each++))so keine Notwendigkeitseq. Wenn Sie mit der Portabilität befasst sind, dann#!/bin/sh.)