Remova todos os trabalhos 'at', exceto os primeiros cinco postos de trabalho

1

Eu quero manter apenas os primeiros cinco trabalhos agendados (como nos 5 números de ID do trabalho mais baixos) e remover o restante dos trabalhos agendados do atq. Como posso fazer isso?

    
por Ketan Patel 18.04.2015 / 08:14

2 respostas

0

No meu sistema Debian, at classifica os trabalhos no momento em que eles estão programados para iniciar e não a ordem que eles receberam para at in:

$ for i in 10 20 30 40 50 60 70; do 
    at now + "$i" min < scripts/foo.sh; sleep 1; 
done
warning: commands will be executed using /bin/sh
job 8 at Sat Apr 18 15:31:00 2015
warning: commands will be executed using /bin/sh
job 9 at Sat Apr 18 15:41:00 2015
warning: commands will be executed using /bin/sh
job 10 at Sat Apr 18 15:51:00 2015
warning: commands will be executed using /bin/sh
job 11 at Sat Apr 18 16:01:00 2015
warning: commands will be executed using /bin/sh
job 12 at Sat Apr 18 16:12:00 2015
warning: commands will be executed using /bin/sh
job 13 at Sat Apr 18 16:22:00 2015
warning: commands will be executed using /bin/sh
job 14 at Sat Apr 18 16:32:00 2015

$ atq
9   Sat Apr 18 15:41:00 2015 a terdon
11  Sat Apr 18 16:01:00 2015 a terdon
10  Sat Apr 18 15:51:00 2015 a terdon
12  Sat Apr 18 16:12:00 2015 a terdon
8   Sat Apr 18 15:31:00 2015 a terdon
14  Sat Apr 18 16:32:00 2015 a terdon
13  Sat Apr 18 16:22:00 2015 a terdon

Como você pode ver, at numerará os trabalhos na ordem em que serão executados, mas atq os listará em uma ordem aparentemente aleatória.

  1. Para remover os primeiros 5 trabalhos listados por atq , você pode fazer:

    atrm $(atq | head -5 | cut -f 1)
    
  2. Para excluir os primeiros 5 trabalhos com base na ordem em que serão lançados, faça:

    atrm $(atq | sort -n | head -5 | cut -f 1)
    
por 18.04.2015 / 14:30
0

Isso remove os 5 primeiros, então está errado, se você puder descobrir como fazer uma cabeça invertida (remover a cabeça), então você terá a resposta. Uma combinação de wc e tail pode fazer isso.

atq | sort -g  | head -5 | cut -f1 | xargs atrm

Resposta correta

atq | sort -g  | tail -n +6 | cut -f1 | xargs atrm
    
por 18.04.2015 / 14:31

Tags