Jawaban:
at -c jobnumberakan mendaftar satu pekerjaan. Jika Anda ingin melihat semuanya, Anda dapat membuat skrip seperti
#!/bin/bash
MAXJOB=$(atq | head -n1 | awk '{ print $1; }')
for each in $(seq 1 $MAXJOB); do echo "JOB $each"; at -c $each; done
Mungkin ada cara yang lebih singkat untuk melakukan itu, saya baru saja mengeluarkan itu dari kepala saya :)
awk,atq | awk '{ system("at -c " $1) }'
Dibangun berdasarkan respons sebelumnya, ini mencantumkan setiap baris pekerjaan dari atqmenampilkan nomor pekerjaan dan waktu yang dijadwalkan dan kemudian hanya perintah yang akan dijalankan, diurutkan secara kronologis (bukan nomor pekerjaan):
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
memproduksi, mis
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
Saya telah membuat perintah atqcuntuk ini ("atq with command"). Fungsi bash. Jalankan ini pada bash command line (perintah terminal). Atau letakkan di ~/.bashrcfile untuk membuatnya nanti:
atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }
Menguji:
atqc
Itu bekerja untuk RHEL7 dengan at -Vversi 3.1.13.
Ubuntu 16.04 dengan at -Vversi 3.1.18 memiliki format output yang sedikit berbeda at -c N, jadi pada server Ubuntu saya ini berfungsi:
atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $1"';}
at -c $(atq | cut -f 1)ataufor each in $(atq | cut -f 1)akan menghindari kesalahan "Tidak dapat menemukan jobid". (Juga, Bashfor ((each=1; each<=MAXJOB; each++))tidak perlu melakukannyaseq. Jika Anda khawatir dengan portabilitas, maka#!/bin/sh.)