Remova todas as tarefas `at`


32

Eu sei que para remover um attrabalho agendado que tenho que usar atrm "numjob1 numjob2", mas existe uma maneira fácil de fazer isso em todos os trabalhos?

Respostas:


31

Você pode executar este comando para remover todos os trabalhos no atq

 for i in `atq | awk '{print $1}'`;do atrm $i;done

2
variação nesta respostaat -l | awk '{printf "%s ", $1}' | xargs atrm
Sergiy Kolodyazhnyy




1

Aqui está minha versão do xargs, que evita aparelhos e, esperamos, seja intuitiva:

atq | cut -f 1 | xargs atrm

Você também pode receber trabalhos específicos por timestamp / userid e removê-los:

atq | grep "2018-10-22 16:" | cut -f 1 | xargs atrm

0

Eu tinha mais de 58k trabalhos no atd (alguém reiniciou o servidor e, por algum motivo, o serviço atd não foi iniciado). A remoção dos trabalhos usando o atrm é muito dolorosa para uma fila muito alta.

Parei o atd e excluí todos os diretórios de / var / spool / atjobs e arquivos de / var / spool / atspool . Para mim funcionou.

rm -rf /var/spool/atjobs/* ; rm /var/spool/atspool/*

Você nunca diz nada sobre começar de atdnovo, e se isso foi bem-sucedido, nem menciona para que seria a solução adequada para o Unix. Como você garantiu que os trabalhos de outros usuários não fossem excluídos?
Kusalananda

Está bem! Desculpe! Precisa iniciar o atd após o processo. Minha solução é para o "SUSE Linux Enterprise Server 12". Mas acho que pode ser usado em outras distribuições. Encontrei as informações dos diretórios em "man". Na minha situação, apenas o root está usando atd, e a remoção dos arquivos era segura.
Felipe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.