Hapus semua pekerjaan `at`


32

Saya tahu bahwa untuk menghapus atpekerjaan terjadwal saya harus menggunakan atrm "numjob1 numjob2", tetapi apakah ada cara mudah untuk melakukan itu untuk semua pekerjaan?

Jawaban:


31

Anda dapat menjalankan perintah ini untuk menghapus semua pekerjaan di atq

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

2
variasi pada jawaban iniat -l | awk '{printf "%s ", $1}' | xargs atrm
Sergiy Kolodyazhnyy

10

Anda dapat melakukan sesuatu seperti ini:

for i in $(atq | cut -f 1); do atrm $i; done

Di FreeBSD, cut -f3kolom pertama adalah tanggal
David Jashi



1

Ini adalah versi xargs saya yang menghindari kawat gigi dan mudah-mudahan intuitif:

atq | cut -f 1 | xargs atrm

Anda juga dapat menerima pekerjaan tertentu dengan cap waktu / userid dan kemudian menghapusnya:

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

0

Saya memiliki lebih dari 58k pekerjaan di atd (seseorang me-reboot server dan untuk beberapa alasan layanan ATD tidak dimulai). Menghapus pekerjaan menggunakan atrm sangat menyakitkan untuk antrian yang sangat tinggi.

Saya berhenti atd dan menghapus semua dir dari / var / spool / atjobs dan file dari / var / spool / atspool . Bagi saya itu berhasil.

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

Anda tidak pernah mengatakan apa pun tentang memulai atdlagi, dan apakah itu berhasil, Anda juga tidak menyebutkan untuk apa Unix ini akan menjadi solusi yang memadai. Bagaimana Anda memastikan bahwa pekerjaan pengguna lain tidak dihapus?
Kusalananda

Baik! Maaf! Harus mulai ATD setelah proses. Solusi saya adalah untuk "SUSE Linux Enterprise Server 12". Tapi saya pikir itu bisa digunakan di distribusi lain. Saya menemukan informasi direktori di "man". Dalam situasi saya, hanya root yang menggunakan atd, kemudian menghapus file itu aman.
Felipe
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.