İş yerindeki içerikleri nasıl yazdırırım?


34

Planlanan bazı işleri olan bir Debian kutum var at. İşleri zamanlarını kullanarak kullanarak listeleyebileceğimi biliyorum atq, ancak içeriğine göz atmanın dışında başka bir şey de var /var/spool/cron/atjobsmı?

Yanıtlar:


39

at -c jobnumbertek 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 :)


7
at -c $(atq | cut -f 1)veya for each in $(atq | cut -f 1)"jobid bulunamıyor" hatalarından kaçınılacaktır. (Ayrıca, Bash'in for ((each=1; each<=MAXJOB; each++))buna ihtiyacı yok seq. Taşınabilirlikle ilgileniyorsanız, o zaman #!/bin/sh.)
sonraki bildirime kadar duraklatıldı.

Eski güzel unutmayın awk,atq | awk '{ system("at -c " $1) }'
norcalli

7

Önceki yanıtlara dayanarak, bu, her bir işin satırını atqiş 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

4

Çok daha basit bir yaklaşım:

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

Ayrıca lesssırayla her birine bakabilirsiniz , ki bu daha net olabilir:

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

2

Bunun atqciçin komut yarattım ("with atq command"). Bir bash işlevi. Bunu bash komut satırında (terminal komutu) çalıştırın. Veya ~/.bashrcdaha 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 -Vsürüm 3.1.13 ile RHEL7 için çalışıyor .

Ubuntu 16.04 at -Vsü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"';}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.