Як запобігти роботі з atd минулими робочими місцями?


9

Демон - це чудовий інструмент! Однак якщо робота запланована на 8:00 ранку, а машина на той час вимкнена, програма запускатиме роботу кожного разу, коли машина завантажиться. Що я хотів би зробити, це перешкодити йому виконувати роботу, якщо час минув. Я шукав сторінки чоловіка та в Інтернеті, але відповіді немає, або я не зміг її знайти. Я використовую Arch, але, наскільки я знаю, дуже схожий у дистрибутивах.

Будь-яка допомога дуже цінується!

Відповіді:


7

Коли робота стає минулою роботою? Якщо ви ввімкнете систему о 7:59:50 і atдемон починається 8:00:01, чи слід виконати завдання? Що робити, якщо демон починається о 7:59:59, але для читання всіх його файлів знадобиться дві секунди?

Тобі вирішувати! Почніть свою роботу з перевірки часу та припиніть, якщо час минув.

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

2

Ви можете написати init-скрипт, який скасовує всі заплановані робочі місця при відключенні або перезавантаженні.

Я не впевнений у Arch-Linux - чи є /etc/sysconfig/atщось подібне? Можливо, це просто конфігураційний перемикач, який потрібно перевернути ...


Я думаю, що це найкраще рішення, змийте atчергу при завантаженні перед atзапуском.
bahamat

Це саме те, на що я очікую, що / повинно бути можливим! На жаль, /etc/sysconfig/в Arch немає жодного каталогу ... І жоден із файлів, перелічених на сторінках man, не є конфігураційними файлами.
Елмер

@Elmer Я трохи погуглився і прочитав про аркуш Linux. "/etc/rc.d/atd", здається, є init-скриптом для ат-демона там. Подивіться там, якщо ви бачите, як він розбирає якийсь конфігураційний файл. Якщо вам не пощастило, вам доведеться шукати власний init-скрипт (наприклад, назвіть його atclearта запустіть його раніше atd).
Нілс

2

Мій голос - за cronдемон.

Якщо вам потрібно запустити його в конкретний час дня, але не в один і той же час кожного дня, я створив би кронтаб з одним записом на день, із визначеним часом виконання:

Деякі приклади, взяті з 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

Те, що ви хочете - це демон крона. Це робить саме те, що ти хочеш.

Подавайте улюблену пошукову систему для cron daemon, і у вас є маса посібників та інструкцій. man cronа man crontabтакож корисно.


Дякую за допомогу, але cron не працює для моєї проблеми. Мені потрібен запуск сценарію в конкретний час дня, але не в один і той же час кожного дня.
Елмер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.