atq 목록을 0으로 재설정하시겠습니까?

atq 목록을 0으로 재설정하시겠습니까?

at한동안 이것을 사용했는데 at작업 ID가 영원히 증가하는 것 같습니다.

$ atq
332 Mon Sep 23 17:25:00 2013 a cklein
$ # I'm up to 332 at jobs!

흥미롭게도 at완료된 작업에 대한 데이터는 유지되지 않는 것 같습니다.

$ at -c 331
Cannot find jobid 331

이 작업 ID 번호를 다시 0으로 재설정할 수 있습니까?

답변1

예상한 대로 atd서비스를 다시 시작해도 작업 ID가 재설정되지 않았습니다.

일부 테스트 커밋

$ at -f test.bash now
job 105 at Mon Sep 23 20:04:00 2013
$ at -f test.bash now
job 106 at Mon Sep 23 20:04:00 2013

스풀 카탈로그를 주의 깊게 확인하세요

$ sudo ls -l /var/spool/at/spool/
total 0

다시 시작

$ sudo /etc/init.d/atd restart atd 중지: [ OK ] atd 시작: [ OK ]

후속 테스트 제출

$ at -f test.bash now
job 107 at Mon Sep 23 20:05:00 2013
$ at -f test.bash now
job 108 at Mon Sep 23 20:05:00 2013

깊은 발굴

atd따라서 이와 같은 도구를 사용하여 실행 파일을 살펴보면 lsof다음 사항을 알 수 있습니다.

$ sudo lsof | grep atd
atd       22341      root  cwd       DIR              253,0      4096    2103653 /var/spool/at
atd       22341      root  rtd       DIR              253,0      4096          2 /
atd       22341      root  txt       REG              253,0     24712    1192814 /usr/sbin/atd
atd       22341      root  mem       REG              253,0     57440     393478 /lib64/libnss_files-2.13.so
atd       22341      root  mem       REG              253,0    387352     393694 /lib64/libfreebl3.so
atd       22341      root  mem       REG              253,0     43304     393695 /lib64/libcrypt-2.13.so
atd       22341      root  mem       REG              253,0     99128     393328 /lib64/libaudit.so.1.0.0
atd       22341      root  mem       REG              253,0     22536     393671 /lib64/libdl-2.13.so
atd       22341      root  mem       REG              253,0   1956608     393664 /lib64/libc-2.13.so
atd       22341      root  mem       REG              253,0     13776     393333 /lib64/libpam_misc.so.0.82.0
atd       22341      root  mem       REG              253,0     55280     393331 /lib64/libpam.so.0.82.2
atd       22341      root  mem       REG              253,0    124592     393682 /lib64/libselinux.so.1
atd       22341      root  mem       REG              253,0    151456     393578 /lib64/ld-2.13.so
atd       22341      root    0u      CHR                1,3       0t0       4066 /dev/null
atd       22341      root    1u      CHR                1,3       0t0       4066 /dev/null
atd       22341      root    2u      CHR                1,3       0t0       4066 /dev/null
atd       22341      root    3uW     REG              253,0         6    1966556 /var/run/atd.pid

스풀 카탈로그를 조사하십시오.

따라서 열려 있는 파일은 없지만 디렉터리가 있으므로 /var/spool/at더 조사해 보겠습니다.

$ sudo ls -la /var/spool/at/
total 20
drwx------.  3 daemon daemon 4096 Sep 23 20:42 .
drwxr-xr-x. 15 root   root   4096 Aug  8  2011 ..
-rw-------.  1 daemon daemon    6 Sep 23 20:05 .SEQ
drwx------.  2 daemon daemon 4096 Sep 23 20:42 spool

빙고! 이것이 우리가 찾고 있는 것입니다 .SEQ. 추가 문서에 다음이 나와 있습니다.

$ sudo more .SEQ 
0006c

bc우리는 이것이 16진수에서 10진수로 변환하는 올바른 값임을 스스로 확신할 수 있습니다 .

$ echo "ibase=16; 0006C"|bc
108

실험

여기에는 16진수 형식으로 숫자가 입력되는 것 같습니다. 작은 실험을 통해 이 값을 0으로 변경할 수 있습니다. 하지만 먼저 서비스를 중지하세요 atd.

$ sudo /etc/init.d/atd stop
...edit file using vim, change it to 0...
$ sudo /etc/init.d/atd start

이제 또 다른 테스트를 실행해 보세요 at.

$ at -f test.bash now
job 1 at Mon Sep 23 20:52:00 2013

그리고 숫자는 다시 시작되었고 우리는 1로 돌아왔습니다. 중지하고 편집하고 다시 시작하여 값을 다시 설정하면 다음과 같습니다 0006c.

$ at -f test.bash now
job 109 at Mon Sep 23 20:53:00 2013

미스터리가 해결되었습니다.

다른 배포판에 대한 참고 사항

위 내용은 Fedora 시스템에 대한 복구이며 Debian 및 Ubuntu와 같은 다른 배포판에서는 .SEQ이 파일을 완전히 다른 디렉터리에 저장할 수 있습니다. 예를 들어 Ubuntu는 다음과 같은 파일을 저장합니다.

$ sudo pwd
/var/spool/cron/atjobs
$ sudo ls -la
total 12
drwxrwx--T 2 daemon daemon 4096 Sep 23 21:19 .
drwxr-xr-x 5 root   root   4096 Oct 17  2012 ..
-rw------- 1 daemon daemon    6 Sep 23 21:19 .SEQ

관련 정보