Usuń wszystkie zadania `at`

32

Wiem, że aby usunąć zaplanowane atzadanie, muszę z niego skorzystać atrm "numjob1 numjob2", ale czy istnieje prosty sposób, aby to zrobić dla wszystkich zadań?

robob
źródło

Odpowiedzi:

31

Możesz uruchomić to polecenie, aby usunąć wszystkie zadania w atq

 for i in `atq | awk '{print $1}'`;do atrm $i;done
pradeepchhetri
źródło
2
odmiana tej odpowiedziat -l | awk '{printf "%s ", $1}' | xargs atrm
Sergiy Kolodyazhnyy
10

Możesz zrobić coś takiego:

for i in $(atq | cut -f 1); do atrm $i; done
DaveEmme
źródło
W FreeBSD cut -f3pierwszą kolumną jest data
David Jashi
7

Wydaje mi się to krótką linią:

atrm $(atq | cut -f1)
użytkownik78969
źródło
1

Oto moja wersja xargs, która omija nawiasy klamrowe i jest, mam nadzieję, intuicyjna:

atq | cut -f 1 | xargs atrm

Możesz także grepować określone zadania według datownika / identyfikatora użytkownika, a następnie je usuwać:

atq | grep "2018-10-22 16:" | cut -f 1 | xargs atrm
Thyag
źródło
0

Miałem ponad 58 000 zadań w atd (ktoś zrestartował serwer iz jakiegoś powodu usługa atd nie została uruchomiona). Usuwanie zadań za pomocą atrm jest bardzo bolesne w przypadku bardzo wysokiej kolejki.

Zatrzymałem atd i usunąłem wszystkie katalogi z / var / spool / atjobs i pliki z / var / spool / atspool . Dla mnie to zadziałało.

rm -rf /var/spool/atjobs/* ; rm /var/spool/atspool/*
Felipe
źródło
Nigdy nie mówisz nic o atdponownym uruchomieniu i czy to się udało, ani nie wspominasz, dla jakiego Uniksa byłoby to odpowiednie rozwiązanie. Jak upewniłeś się, że zadania innych użytkowników nie zostały usunięte?
Kusalananda
Dobrze! Przepraszam! Musisz rozpocząć atd po zakończeniu procesu. Moje rozwiązanie dotyczy „SUSE Linux Enterprise Server 12”. Ale myślę, że można go użyć w innych dystrybucjach. Informacje o katalogach znalazłem w „man”. W mojej sytuacji tylko root używa atd, więc usunięcie plików było bezpieczne.
Felipe