Einführung:
Der Befehl atq gibt mir die Liste der Jobs, die darauf warten, ausgeführt zu werden, und ihre Ausführungszeiten. Jede Zeile beginnt mit der Jobnummer.
Der Befehl at -c JobNumber gibt mir den Inhalt des Jobs einschließlich der Umgebungsvariablen.
Was ich wollte, ist ein Befehl, der mir die Liste der Jobs liefert (genau wie der Befehl atq ), aber so erweitert, dass auf jede Auftragszeile die Befehle folgen, die ausgeführt werden, ausgenommen ihre Umgebungsvariablen. zB34 Tue Jan 17 10:22:00 2017 a root
Commands
35 Tue Jan 24 17:50:00 2017 a root
Commands
28 Tue Dec 13 23:00:00 2016 a root
Commands
24 Mon Nov 14 20:27:00 2016 a root
Commands
31 Sun Jan 15 00:21:00 2017 a root
Commands
Humm… konnte keinen solchen Befehl finden, um dies anzuzeigen. Also habe ich dieses Bash-Skript erstellt, das die Arbeit erledigt:
#!/bin/bash
# Description: Displays all 'at' jobs and their respective commands
# Syntax: atlist.sh
# Changes: 05.11.2016 First implementation
########################################################################
# Get the short jobs list and expand from there
atq | while read line ; do
jobnr=$(echo $line | awk '{print $1}')
echo $line
# Pickup all the command lines after first line matching '}'.
# This excludes all the environment variables and the at exit line.
# Exclude the matching '}' line and empty lines
# Add an offset of 8 chars to each command line.
at -c $jobnr | sed -e '1,/^\}/d' -e '/^$/d' -e 's/^/ /'
done