at
私はこれを使って後で実行する簡単なコマンドを予約するシステムを持っています。このコマンドは、同時に開始された複数のコマンドが順次実行されるように(「相互排他的」)ロックを使用します。
一度はコンピュータにログインし、約250のタスクがキューに追加されるという現象を発見しました。これは深刻な問題ではありません。指定された時間を待ってからコマンドが実行を開始するのを見ることができ、連続的なように見えます。各コマンドが実行されると、リストから1秒あたりatq
約1の速度でコマンドから返され、削除されます。
ただし、最終的にはキューにまだ2つの作業が残ります。これは実行する必要があるよりもはるかに時間がかかります。これは次の出力ですwatch atq
。
Every 2.0s: atq Mon Jan 4 17:55:58 2016
242 Tue Jan 5 17:44:00 2016 a root
241 Tue Jan 5 17:44:00 2016 a root
また、実行すると$ sudo find /var/spool/cron/at*
以下の内容が表示されます。
/var/spool/cron/atjobs
/var/spool/cron/atjobs/.SEQ
/var/spool/cron/atjobs/a000f201714448
/var/spool/cron/atjobs/a000f101714448
/var/spool/cron/atspool
デーモンatd
が実行されており、そのPIDを他のシステムデーモンと比較していますが、競合または再生成されていないようです。
これを行い、コマンドを手動で実行できることを知っていますがatrm
、これが起こる理由と次回の発生を防ぐ方法を理解することに興味があります。これらの雇用が停滞する原因は何ですか?
問題のシステムは完全に最新のUbuntu 12.04(正確に言えば)です。
答え1
私の答えは、この質問が2年後に未回答の質問のリストに表示されないようにすることです。
コメントで指摘したように、OPはこれらの仕事が他の日に終わらないことを逃しました。