Jawaban:
at -c jobnumber
akan 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 atq
menampilkan 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 atqc
untuk ini ("atq with command"). Fungsi bash. Jalankan ini pada bash command line (perintah terminal). Atau letakkan di ~/.bashrc
file 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 -V
versi 3.1.13.
Ubuntu 16.04 dengan at -V
versi 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
.)