जवाबों:
at -c jobnumber
एक नौकरी की सूची देगा। यदि आप उन सभी को देखना चाहते हैं, तो आप एक स्क्रिप्ट बना सकते हैं
#!/bin/bash
MAXJOB=$(atq | head -n1 | awk '{ print $1; }')
for each in $(seq 1 $MAXJOB); do echo "JOB $each"; at -c $each; done
संभवतः ऐसा करने का एक छोटा तरीका है, मैंने अभी-अभी अपने सिर को बाहर निकाला है :)
awk
,atq | awk '{ system("at -c " $1) }'
पिछली प्रतिक्रियाओं के आधार पर, यह atq
जॉब नंबर और निर्धारित समय दिखाने से प्रत्येक जॉब की लाइन को सूचीबद्ध करता है और फिर केवल चलाने के लिए आदेश दिया जाता है, कालानुक्रमिक रूप से सॉर्ट किया जाता है (जॉब नंबर के बजाय):
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
उत्पादन, उदाहरण के लिए
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
बहुत सरल दृष्टिकोण:
for j in $(atq | cut -f 1); do at -c "$j"; done
आप प्रत्येक less
को बारी-बारी से देख सकते हैं, जो स्पष्ट हो सकता है:
for j in $(atq | cut -f 1); do at -c "$j" | less; done
मैंने इसके atqc
लिए कमांड बनाया है ("कमांड के साथ एटैक")। एक बैश समारोह। इसे bash कमांड लाइन (टर्मिनल कमांड) पर चलाएँ। या इसे ~/.bashrc
बाद के लिए उपलब्ध कराने के लिए फ़ाइल में रखें:
atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }
झसे आज़माओ:
atqc
at -V
संस्करण 3.1.13 के साथ RHEL7 के लिए काम करता है ।
at -V
संस्करण 3.1.18 के साथ Ubuntu 16.04 में थोड़ा अलग आउटपुट स्वरूप है at -c N
, इसलिए मेरे Ubuntu सर्वर पर यह काम करता है:
atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $1"';}
at -c $(atq | cut -f 1)
याfor each in $(atq | cut -f 1)
"नौकरी ढूंढने वाले" त्रुटियों से नहीं बचेंगे। (इसके अलावा, बैश केfor ((each=1; each<=MAXJOB; each++))
लिए कोई ज़रूरत नहीं हैseq
। यदि आप पोर्टेबिलिटी से संबंधित हैं, तो#!/bin/sh
।)