AT(1)

НАИМЕНОВАНИЕ
at, batch, atq, atrm - ставит в очередь, делает проверку, удаляет задания запланированные на выполнение в будущем

СИНТАКСИС
at [-V] [-q queue] [-f file] [-u username] [-mMlv] timespec ..."
at [-V] [-q ОЧЕРЕДЬ] [-f ФАЙЛ] [-u ИМЯ_ПОЛЬЗОВАТЕЛЯ] [-mMkv] [-t ВРЕМЯ]
at -c НОМЕР_задания [...]
at [-V] -l [-o ФОРМАТ_ВРЕМЕНИ] [НОМЕР_задания ...]
atq [-V] [-q ОЧЕРЕДЬ] [-o ФОРМАТ_ВРЕМЕНИ] [НОМЕР_задания ...]
at [-rd] НОМЕР_задания [...]
atrm [-V] НОМЕР_задания [...]
batch
at -b

ОПИСАНИЕ
at и batch считывают команды со стандартного ввода или из указанного файла, которые должны быть выполнены позже с помощью /bin/sh.

at  выполняет команды в указанное время.

atq выводит на дисплей список заданий пользователя ожидающих выполнения, если только он не суперпользователь (root); в этом случае отображаются задания всех пользователей. Формат строк вывода (по одной на каждое задание): номер задания, дата, время, очередь и имя пользователя.

atrm
    удаляет задания, идентифицируемые по их номеру.

batch
    выполняет команды, когда позволяет уровень нагрузки на систему, то есть когда средний коэффициент нагрузки опускается ниже 1,5 или значения, указанного демону atd(8).

Утилита at позволяет задавать довольно сложные параметры времени, расширяя возможности стандарта POSIX.2. Она принимает время в формате ЧЧ:ММ для выполнения задания в определенное время суток. (Если указанное время уже прошло, задание будет выполняться на следующий день.) Также можно указать midnight (полночь), noon (полдень) или teatime (полдник 16:00), а после времени добавить AM (до 12:00) или PM (после 12:00). Можете указать день, в который будет выполнено задание, указав дату в формате НАЗВАНИЕ_МЕСЯЦА ДЕНЬ с необязательным указанием ГОДА, или дату в формате ММДД[ВВ]ГГ, ММ/ДД/[ВВ]ГГ, ДД.ММ.[ВВ]ГГ или [ВВ]ГГ-ММ-ДД. Дата должна указываться ПОСЛЕ времени суток. Также можно указать время в формате now (сейчас) + ЧИСЛО единиц_времени, где единицами времени могут быть minutes (минуты), hours (часы), days (дни) или weeks (недели), вы можете указать утилите at запустить задание сегодня, добавив к времени today, или запустить завтра, добавив tomorrow (все фразы утилита принимает только на английском языке).

Например, чтобы запустить задание в 16:00 через три дня, надо ввести at 4pm + 3 days (или at 16:00 + 3 days), чтобы запустить задание в 10:00 31 июля, надо ввести at 10am Jul 31 (или at 10:00 Jul 31), а чтобы запустить задание в 01:00 завтра, надо ввести at 1am tomorrow (или at 01:00 tomorrow).

ПРИМЕЧАНИЕ переводчика. В случае истечения назначенного времени или даты выполнения задания (компьютер был выключен или пользователь вышел из сеанса), оно будет выполнено после вашего входа в систему как можно скорее (зависит от параметров /etc/crontab и демона 'atd'). Утилита не создаёт задания на прошедшую дату: «refusing to create job destined in the past» («отказано; задания для прошлого не создаются»).

Спецификация параметров времени находится в файле /usr/share/doc/at/timespec.

Обе команды, и at, и batch считывают задание либо из стандартного ввода, либо из файла, указанного опцией -f, и далее выполняются. Рабочий каталог, окружение и маска прав доступа (umask) сохраняются с момента вызова (за исключением переменных BASH_VERSINFO, DISPLAY, EUID, GROUPS, SHELLOPTS, TERM, UID и _).

Так как утилита at использует setuid(2) (бит разрешения на файл), другие переменные окружения (например, LD_LIBRARY_PATH или LD_PRELOAD) не передаются. Возможно в будущем это изменится. В качестве временного решения укажите эти переменные явно в вашем задании.

Команда at или batch, вызванная с помощью 'su'(1) (без смены оболочки), сохранит идентификатор текущего пользователя. Ему по электронной почте будут отправлены стандартные сообщения об ошибках и стандартный вывод его команд, если таковые имеются. Письмо будет отправлено с помощью программы /usr/bin/sendmail. Если команда at выполняется с помощью 'su -'(1) (со сменой оболочки), т.е. от другого пользователя, то и письмо получит другой пользователь.

Суперпользователь (root) может использовать эти команды в любом случае. Для остальных пользователей доступ определяется файлами /etc/at.allow и /etc/at.deny. Подробнее см. man at.allow(5).

ОПЦИИ

-V  выведет информацию о версии утилиты и завершит работу.

-q ОЧЕРЕДЬ
    использует указанную ОЧЕРЕДЬ, которая обозначается одной буквой латинского алфавита и варьируется от a до z и от A до Z. По умолчанию для at используется очередь 'a', а очередь 'b' для batch. Очереди с буквами дальше по алфавиту запускаются с бо́льшим значением 'niceness' (т.е. с меньшим приоритетом). Специальная очередь '=' зарезервирована для заданий, выполняющихся в данный момент.

Если задание отправлено в очередь, обозначенную заглавной буквой, оно обрабатывается так, как если бы было отправлено для выполнения задания командой batch. По достижении указанного времени применяются правила batch учитывающие среднюю нагрузку на процессор (load average). Если для atq указана конкретная очередь, она отобразит задания только этой очереди.

-m  Отправить пользователю электронное письмо после завершения задания, даже если вывода не было.

-M  Никогда не отправлять пользователю уведомления по электронной почте.

-u ИМЯ_ПОЛЬЗОВАТЕЛЯ
    Отправить уведомление по электронной почте на ИМЯ_ПОЛЬЗОВАТЕЛЯ, а не текущему пользователю.

-f ФАЙЛ
    Прочесть задание из ФАЙЛА, а не из стандартного ввода.

-t ВРЕМЯ
    выполнить задание в указанное ВРЕМЯ, используя формат [[ВВ]ГГ]ММДДччмм[.сс]

-l  alias для atq.

-r  alias для atrm.

-d  alias для atrm.

-b  alias для batch.

-v  Выведет на дисплей время и дату, перед тем как будет создано задание.

Время и дату отобразит в формате "Thu Feb 20 14:50:00 1997".

-c  выведет (с помощью 'cat') перечисленные задания в стандартный вывод.

-o ФОРМАТ
    формат времени подобный strftime(3), используемый для списка заданий.

ФАЙЛЫ
/var/spool/cron/atjobs
/var/spool/cron/atspool
/proc/loadavg
/var/run/utmp
/etc/at.allow
/etc/at.deny

СМОТРИТЕ ТАКЖЕ
at.allow(5), at.deny(5), atd(8), cron(1), nice(1), sh(1), umask(2).

ПРОГРАММНЫЕ ОШИБКИ
Для корректной работы batch в Linux требуется наличие каталога 'proc', смонтированного в корень файловой системы /proc.

Если файл /var/run/utmp недоступен, повреждён или пользователь не вошёл в систему на момент вызова at, электронное письмо отправится пользователю, указанному в переменной окружения LOGNAME. Если она не определена или пуста, будет использоваться идентификатор текущего пользователя.

at и batch в текущей реализации не подходят для случаев, когда пользователи борются за ресурсы. Если для вас это важно, то стоит рассмотреть другую систему пакетной обработки, например nqs.

АВТОРЫ
Бо́льшую часть работы над утилитой 'at' выполнил Томас Кёниг (Thomas Koenig).

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Виктор Ерёмин <ErV2005@rambler.ru> и algri14 <aliger14@mail.ru>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (debian-l10n-russian@lists.debian.org).