Інколи потрібно виконати якусь роботу автоматично у час не дуже зручний для адміністратора. Можливо, зараз офісний сервер надзвичайно загружений, чи файл, який потрібно обробити, буде завантажено в систему не раніш ніж опівночі, а може ви хочете змінити сторінку на вашому веб-сервері у безпечний час, коли на ньому дуже мало користувачів. У той час адміністратор може собі спокійно спати і бачити сни або пити пиво з друзями. Залишати друзів заради роботи якось не годиться, а прокидатися серед ночі, аби запустити пару команд - це взагалі жах. Що ж робить? На щастя, існує така команда як 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