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番号を再びゼロにリセットできますか?

ベストアンサー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進形式で数値が入力されるようです。小さな実験では、この値をゼロに変更できます。ただし、まずサービスを停止してください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

おすすめ記事