Antworten:
at -c jobnumber
listet 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 atq
die 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 less
Elemente 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 ~/.bashrc
Datei, 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 -V
Version 3.1.13.
Ubuntu 16.04 mit at -V
Version 3.1.18 hat ein etwas anderes Ausgabeformat. at -c N
Auf 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
.)