Xóa tất cả các công việc `at`


32

Tôi biết rằng để loại bỏ một atcông việc theo lịch trình tôi phải sử dụng atrm "numjob1 numjob2", nhưng có một cách dễ dàng để làm điều đó cho tất cả các công việc?

Câu trả lời:


31

Bạn có thể chạy lệnh này để loại bỏ tất cả các công việc tại atq

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

2
biến thể của câu trả lời nàyat -l | awk '{printf "%s ", $1}' | xargs atrm
Sergiy Kolodyazhnyy

10

Bạn có thể làm một cái gì đó như thế này:

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

Trong FreeBSD, cut -f3cột đầu tiên là ngày
David Jashi



1

Đây là phiên bản xargs của tôi tránh niềng răng và hy vọng trực quan:

atq | cut -f 1 | xargs atrm

Bạn cũng có thể grep các công việc cụ thể bằng dấu thời gian / userid và sau đó xóa chúng:

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

0

Tôi đã có hơn 58k công việc trong atd (ai đó đã khởi động lại máy chủ và vì lý do nào đó dịch vụ atd không bắt đầu). Loại bỏ các công việc sử dụng atrm là rất đau đớn cho hàng đợi rất cao.

Tôi đã dừng atd và xóa tất cả các thư mục từ / var / spool / atjobs và các tệp từ / var / spool / atspool . Đối với tôi nó đã làm việc.

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

Bạn không bao giờ nói bất cứ điều gì về việc bắt đầu atdlại, và liệu điều đó có thành công hay không, bạn cũng không đề cập đến Unix, đây sẽ là một giải pháp thích hợp. Làm thế nào bạn đảm bảo rằng công việc của người dùng khác không bị xóa?
Kusalananda

Được! Lấy làm tiếc! Cần bắt đầu atd sau quá trình. Giải pháp của tôi là "SUSE Linux Enterprise Server 12". Nhưng tôi nghĩ rằng nó có thể sử dụng trong các bản phân phối khác. Tôi tìm thấy thông tin của các thư mục trong "người đàn ông". Trong tình huống của tôi, chỉ có root là sử dụng atd, sau đó xóa các tệp là an toàn.
Felipe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.