직장의 내용을 어떻게 인쇄합니까? 작업이있는 데비안 상자가 있습니다

사용하여 예약 된 작업이있는 데비안 상자가 있습니다 at. 나는 시간을 사용하여 작업을 나열 할 수 atq있지만 엿보기와는 별도로 내용을 인쇄 할 수있는 방법이 /var/spool/cron/atjobs있습니까?



답변

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

아마도 더 짧은 방법이있을 수 있습니다.


답변

이전 응답을 바탕으로 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대한 명령 을 작성 했습니다 ( “atq with command”). bash 함수. 이것을 bash 명령 행 (터미널 명령)에서 실행하십시오. 또는 ~/.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에서 작동합니다 .

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"';}