Планування робіт за допомогою команди at
Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.
Інколи потрібно виконати якусь роботу автоматично у час не дуже зручний для адміністратора. Можливо, зараз офісний сервер надзвичайно загружений, чи файл, який потрібно обробити, буде завантажено в систему не раніш ніж опівночі, а може ви хочете змінити сторінку на вашому веб-сервері у безпечний час, коли на ньому дуже мало користувачів. У той час адміністратор може собі спокійно спати і бачити сни або пити пиво з друзями. Залишати друзів заради роботи якось не годиться, а прокидатися серед ночі, аби запустити пару команд - це взагалі жах. Що ж робить? На щастя, існує така команда як at (українською о: напр, завтра о сьомій), яка допомагає розв'язяти цю проблему дуже просто.
Запустити цю команду можна так: at час_виконання і потім ввести серію команд зі стандартного вводу, напр.: at 23:20 At видасть попередження, про те, яка саме оболонка виконає ваші команди. На своєму Лінуксі я бачу таке: warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh. А потім попросить вас ввести необхідні команди, напр., таке:
at> echo робота готова at> ^D job 5 at 2004-03-20 23:20
Лишень не забудьте, що закінчення файла подається через Crtl+D (^D) . От і все. Перевірте свою поштову скриньку після 23:20 за часом сервера і ви повинні побачити там таке повідомлення: "робота готова".
at розпізнає багато часових форматів. Узагальнюючи, можна сказати, що спочатку подається час, а потім дата. Найлегше це пояснити на прикладах:
| Приклад | Пояснення |
|---|---|
at 14:00 |
at запустить роботу
о 14:00.
Якщо сьогодні вже після 14-ї, то роботу буде виконано в цей же час
наступного дня. |
at 10AM |
Десята ранку(АМ) чи вечора (РМ) |
at 4:00 032004 |
О 4-й ранку 20 бер. 2004 |
at 14:30 бер 20 at 14:30 бер 20 2004 |
Якщо локаль правильно
налаштована, |
at 4am +5 days |
О 4-й ранку через 5 днів |
at 4am +5 weeks |
О 4-й ранку через 5 тижнів |
at 1pm tomorrow |
Завтра о першій дня. |
at midnight |
Опівночі |
at teatime |
16:00 (коли англійці п'ють чай :) |
at now |
зараз |
at now +5 min |
через 5 хвилин |
Дозвіл задавати роботи через at контролюється за допомогою файлів /etc/at.allow (кому можна) та /etc/at.deny (а кому - зась).
Вводити послідовність команд для виконання через at напряму з клавіатури може бути заскладним завданням. Тому це краще робити за допомогою оболонки: at +10 hours < job.sh, або за допомогою опції -f, напр.: at -f job.sh +10 hours. Увага: at зчитує зміст файла у самий момент запуску команди, а не в момент виконання роботи. Таким чином зміни файла зроблені після запуску at не матимуть жодного ефекту під час виконання роботи.
Інші корисні опції:
-V показує версію at -m посилає електронне повідомлення навіть якщо робота не видала нічого на стандартний вивід
Переглянути заплановані роботи можна за допомогою команди atq (at queue - "черга команди at"):
$ atq 10 2004-03-25 04:00 a kuzma 13 2004-04-24 04:00 a kuzma
А відмінити - за допомогою atrm (at remove - "видалення команд для at")
$ atrm 10 $ atq 13 2004-04-24 04:00 a kuzma

