직장의 내용을 어떻게 인쇄합니까?


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)"jobid를 찾을 수 없습니다"오류가 발생하지 않습니다. (또한 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 함수. 이것을 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"';}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.