Estou respondendo para que isso não apareça mais na lista de perguntas não respondidas, dois anos depois do fato.
Como indicado nos comentários, o OP errou que os trabalhos não estavam previstos para outro dia.
Eu tenho um sistema que usa o comando at
para agendar comandos simples para serem executados posteriormente. O comando em questão usa um bloqueio para que vários comandos iniciados ao mesmo tempo sejam executados sequencialmente ("mutex").
Em um ponto, eu entrei em uma máquina e vi que algo causou que ~ 250 desses trabalhos fossem enfileirados. Não deve ser um problema sério e depois de esperar pelo tempo especificado, vi que os comandos começaram a ser executados e pareciam seqüenciais - como todos os comandos executados, ele foi removido da lista retornada por atq
, a uma taxa de 1 por segundo.
Eventualmente, havia 2 trabalhos restantes na fila - bem depois da hora em que eles deveriam ser executados. Aqui está a saída de 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
Além disso, executando $ sudo find /var/spool/cron/at*
, vejo isto:
/var/spool/cron/atjobs
/var/spool/cron/atjobs/.SEQ
/var/spool/cron/atjobs/a000f201714448
/var/spool/cron/atjobs/a000f101714448
/var/spool/cron/atspool
O daemon atd
está sendo executado e, comparando seu PID com outros daemons do sistema, parece que ele não travou nem reapareceu.
Eu sei que posso atrm
dos trabalhos e apenas executar os comandos manualmente, mas estou mais interessado em entender por que isso acontece e como evitar que isso aconteça da próxima vez. O que poderia fazer com que esses trabalhos ficassem presos?
O sistema em questão é um Ubuntu 12.04 (preciso) totalmente atualizado.