ฉันจะพิมพ์เนื้อหาของที่งานได้อย่างไร


34

ฉันมีกล่อง Debian 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)จะหลีกเลี่ยงข้อผิดพลาด "หางานไม่ได้" (นอกจากนี้ Bash ก็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สำหรับสิ่งนี้ ("atq with command") ฟังก์ชั่นทุบตี รันสิ่งนี้บนบรรทัดคำสั่ง bash (คำสั่ง terminal) หรือวางไว้ใน~/.bashrcไฟล์เพื่อให้พร้อมใช้งานในภายหลัง:

atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }

ทดสอบมัน

atqc

ใช้งานได้กับ RHEL7 กับat -Vเวอร์ชัน 3.1.13

Ubuntu 16.04 กับat -Vรุ่น 3.1.18 มีรูปแบบผลลัพธ์แตกต่างกันเล็กน้อยat -c Nดังนั้นบนเซิร์ฟเวอร์ Ubuntu ของฉันวิธีนี้ใช้งานได้:

atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $1"';}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.