मैं नौकरियों की सामग्री कैसे प्रिंट करूं?


34

मेरे पास एक डेबियन बॉक्स है जिसमें कुछ नौकरियों का उपयोग करना है at। मुझे पता है कि मैं उनके समय का उपयोग करके नौकरियों को सूचीबद्ध कर सकता हूं atq, लेकिन क्या उनकी सामग्री को प्रिंट करने के अलावा, झांकने के अलावा भी कोई तरीका है /var/spool/cron/atjobs?

जवाबों:


39

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 

संभवतः ऐसा करने का एक छोटा तरीका है, मैंने अभी-अभी अपने सिर को बाहर निकाला है :)


7
at -c $(atq | cut -f 1)या for each in $(atq | cut -f 1)"नौकरी ढूंढने वाले" त्रुटियों से नहीं बचेंगे। (इसके अलावा, बैश के for ((each=1; each<=MAXJOB; each++))लिए कोई ज़रूरत नहीं है seq। यदि आप पोर्टेबिलिटी से संबंधित हैं, तो #!/bin/sh।)
आगे की सूचना तक रोक दिया गया।

अच्छे पुराने मत भूलना awk,atq | awk '{ system("at -c " $1) }'
norcalli

7

पिछली प्रतिक्रियाओं के आधार पर, यह 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

4

बहुत सरल दृष्टिकोण:

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

2

मैंने इसके 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"';}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.