Інколи потрібно виконати якусь роботу автоматично у час не дуже зручний для адміністратора. Можливо, зараз офісний сервер надзвичайно загружений, чи файл, який потрібно обробити, буде завантажено в систему не раніш ніж опівночі, а може ви хочете змінити сторінку на вашому веб-сервері у безпечний час, коли на ньому дуже мало користувачів. У той час адміністратор може собі спокійно спати і бачити сни або пити пиво з друзями. Залишати друзів заради роботи якось не годиться, а прокидатися серед ночі, аби запустити пару команд - це взагалі жах. Що ж робить? На щастя, існує така команда як 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 10PM
: Десята ранку(АМ) чи вечора (РМ)
at 4:00 032004
: О 4-й ранку 20 бер. 2004
at 14:30 бер 20
at 14:30 бер 20 2004
: Якщо локаль правильно налаштована, at
розпізнає українські назви місяців
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