Làm thế nào để ngăn chặn atd chạy các công việc trong quá khứ?


9

Tại daemon là một công cụ tuyệt vời! Tuy nhiên, nếu một công việc được lên kế hoạch vào 8:00 sáng và máy tắt vào thời điểm đó, thì sẽ chạy công việc bất cứ khi nào máy được khởi động. Những gì tôi muốn làm là ngăn chặn nó chạy công việc nếu thời gian đã qua. Tôi đã tìm kiếm các trang người đàn ông và trực tuyến, nhưng không có câu trả lời hoặc tôi không thể tìm thấy. Tôi đang sử dụng Arch, nhưng theo như tôi biết thì rất giống nhau trên các bản phân phối.

Bất kỳ sự giúp đỡ nào cũng được đánh giá cao!

Câu trả lời:


7

Khi nào một công việc trở thành một công việc trong quá khứ? Nếu bạn bật hệ thống lúc 7:59:50 và attrình nền bắt đầu lúc 8:00:01, công việc có nên được thực hiện không? Điều gì sẽ xảy ra nếu daemon bắt đầu lúc 7:59:59 nhưng mất hai giây để đọc tất cả các tệp của nó?

Bạn quyết định! Bắt đầu công việc của bạn với một kiểm tra thời gian, và hủy bỏ nếu thời gian đã qua.

export execute_by_date=$(date +%s 'tomorrow 8:01')
at tomorrow 8:00
[ "$(date +%s)" -le "$execute_by_date" ] || exit
do_stuff
␄

2

Bạn có thể viết một tập lệnh init để hủy bỏ tất cả các công việc bị loại bỏ khi tắt máy hoặc khởi động lại.

Tôi không chắc chắn về Arch-Linux - có một /etc/sysconfig/athoặc một cái gì đó tương tự? Có lẽ nó chỉ là một công tắc cấu hình mà bạn phải lật ...


Tôi nghĩ rằng đây là giải pháp tốt nhất, xả athàng khi khởi động trước khi khởi động at.
bahamat

Đây là chính xác những gì tôi mong đợi sẽ / nên có thể! Thật không may, không có /etc/sysconfig/thư mục nào trong Arch ... Và không có tệp nào được liệt kê trong trang man là tệp cấu hình.
Elmer

@Elmer Tôi chỉ Googled một chút và đọc về arch linux. '/etc/rc.d/atd' dường như là tập lệnh init cho at-daemon ở đó. Có một cái nhìn ở đó nếu bạn có thể thấy nó phân tích một số tập tin cấu hình. Nếu bạn không may mắn ở đó, bạn phải tìm tập lệnh init của riêng mình (ví dụ: đặt tên cho nó atclearvà chạy nó trước atd).
Nils

2

Phiếu bầu của tôi là dành cho crondaemon.

Nếu bạn cần chạy nó vào những thời điểm cụ thể trong ngày, nhưng không phải vào cùng một thời điểm mỗi ngày, tôi sẽ tạo một crontab với một mục nhập trong phạm vi ngày với thời gian thực hiện cụ thể:

Một số ví dụ được lấy từ crontab(5):

# run five minutes after midnight, every day
5 0 * * *       command
# run at 2:15pm on the first of every month
15 14 1 * *     command
# run at 10 pm on weekdays
0 22 * * 1-5    command

0

Những gì bạn muốn là daemon cron. Nó làm chính xác những gì bạn muốn.

Cung cấp cho bạn công cụ tìm kiếm yêu thích cho cron daemon và bạn có một loạt các hướng dẫn và hướng dẫn. man cronman crontabcũng hữu ích.


Cảm ơn sự giúp đỡ, nhưng cron không hoạt động cho vấn đề của tôi. Tôi cần một kịch bản chạy vào những thời điểm cụ thể trong ngày, nhưng không phải vào cùng một thời điểm mỗi ngày.
Elmer
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.