Yanıtlar:
at -c jobnumber
tek bir işi listeler. Hepsini görmek isterseniz, gibi bir komut dosyası oluşturabilirsiniz.
#!/bin/bash
MAXJOB=$(atq | head -n1 | awk '{ print $1; }')
for each in $(seq 1 $MAXJOB); do echo "JOB $each"; at -c $each; done
Muhtemelen bunu yapmanın daha kısa bir yolu var, sadece kafamdan fırladım :)
awk
,atq | awk '{ system("at -c " $1) }'
Önceki yanıtlara dayanarak, bu, her bir işin satırını atq
iş numarası ve planlanan zaman göstermekten ve ardından sadece çalıştırılacak komutu kronolojik olarak sıralayarak (iş numarası yerine) listeler:
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
üreten, örneğin
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
Bunun atqc
için komut yarattım ("with atq command"). Bir bash işlevi. Bunu bash komut satırında (terminal komutu) çalıştırın. Veya ~/.bashrc
daha sonra kullanılabilir olması için dosyaya koyun :
atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }
Dene:
atqc
Bu at -V
sürüm 3.1.13 ile RHEL7 için çalışıyor .
Ubuntu 16.04 at -V
sürüm 3.1.18 ile biraz farklı bir çıktı formatına sahip at -c N
, bu yüzden Ubuntu sunucumda şu şekilde çalışır:
atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $1"';}
at -c $(atq | cut -f 1)
veyafor each in $(atq | cut -f 1)
"jobid bulunamıyor" hatalarından kaçınılacaktır. (Ayrıca, Bash'infor ((each=1; each<=MAXJOB; each++))
buna ihtiyacı yokseq
. Taşınabilirlikle ilgileniyorsanız, o zaman#!/bin/sh
.)