Удалить все `at` вакансии

32

Я знаю, что для удаления запланированной atработы мне нужно пользоваться atrm "numjob1 numjob2", но есть ли простой способ сделать это для всех работ?

robob
источник

Ответы:

31

Вы можете запустить эту команду, чтобы удалить все задания в atq

 for i in `atq | awk '{print $1}'`;do atrm $i;done
pradeepchhetri
источник
2
вариация на этот ответat -l | awk '{printf "%s ", $1}' | xargs atrm
Сергей Колодяжный
10

Вы могли бы сделать что-то вроде этого:

for i in $(atq | cut -f 1); do atrm $i; done
DaveEmme
источник
Во FreeBSD это cut -f3первая колонка с датой
David Jashi
7

Это кажется мне короткой строкой:

atrm $(atq | cut -f1)
user78969
источник
1

Вот моя версия xargs, которая избегает скобок и, надеюсь, интуитивно понятна:

atq | cut -f 1 | xargs atrm

Вы также можете выполнить поиск определенных заданий по метке времени / идентификатору пользователя и затем удалить их:

atq | grep "2018-10-22 16:" | cut -f 1 | xargs atrm
Thyag
источник
0

У меня было более 58 тыс. Заданий в atd (кто-то перезагрузил сервер и по какой-то причине служба atd не запустилась). Удаление заданий с использованием atrm очень болезненно для очень высокой очереди.

Я остановил atd и удалил все каталоги из / var / spool / atjobs и файлы из / var / spool / atspool . Для меня это сработало.

rm -rf /var/spool/atjobs/* ; rm /var/spool/atspool/*
Фелипе
источник
Вы никогда не говорите ничего о запуске atdснова, и о том, был ли это успешным, и не упоминаете, для чего Unix это было бы адекватным решением. Как вы убедились, что задания других пользователей не были удалены?
Кусалананда
Хорошо! Сожалею! Нужно запустить atd после процесса. Мое решение для "SUSE Linux Enterprise Server 12". Но я думаю, что его можно использовать в других дистрибутивах. Я нашел информацию о каталогах в "человеке". В моей ситуации только root использует atd, тогда удаление файлов было безопасным.
Фелипе