Frage Wie drucke ich Inhalte von Jobs?


Ich habe eine Debian-Box mit einigen geplanten Aufgaben at. Ich weiß, dass ich die Jobs mit ihren Zeiten auflisten kann atq, aber gibt es irgendeinen Weg, ihre Inhalte auszudrucken, abgesehen davon, hineinzuspähen /var/spool/cron/atjobs?


23
2017-08-26 07:31


Ursprung




Antworten:


at -c jobnumber wird einen einzelnen Job auflisten. Wenn Sie alle sehen möchten, können Sie ein Skript wie erstellen

#!/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, um das zu tun, ich habe mir das einfach aus dem Kopf geholt :)


29
2017-08-26 07:41



at -c $(atq | cut -f 1) oder for each in $(atq | cut -f 1) vermeidet "Kann nicht finden, Jobid" Fehler. (Auch Bash hat for ((each=1; each<=MAXJOB; each++)) also keine Notwendigkeit für seq. Wenn es um Portabilität geht, dann #!/bin/sh.) - Dennis Williamson


Aufbauend auf vorherigen Antworten wird die Zeile jedes Jobs aufgelistet atq zeigt Jobnummer und geplante Zeit an und dann nur den auszuführenden Befehl, chronologisch sortiert (statt Jobnummer):

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

Herstellen z.B.

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

5
2018-03-10 22:12





Ein viel einfacherer Ansatz:

for j in $(atq | cut -f 1); do at -c "$j"; done

Du könntest auch jeden einchecken less im Gegenzug könnte das klarer sein:

for j in $(atq | cut -f 1); do at -c "$j" | less; done

3
2018-05-10 00:35