Утилита at читает команды со стандартного входного потока и группирует
их в виде задания at для выполнения позже, в заданное время.
Задание at будет выполняться отдельным процессом командного
интерпретатора, работающим в отдельной группе процессов без управляющего терминала, но
переменные среды, текущий каталог, маска создания файла (см.
umask(1)) и ограничения системных ресурсов (только для
командных интерпретаторов sh и ksh, см.
ulimit(1)), имеющиеся в момент вызова утилиты at,
сохраняются и будут использованы при выполнении задания at.
При посылке задания at его идентификатор и запланированное время
выполнения выдаются в стандартный поток ошибок. идентификатор_задания_at - это
строка, состоящая исключительно из алфавитноцифровых символов и символа точки.
идентификатор_задания_at присваивается заданию системой при постановке на
выполнение и является уникальным.
Уведомление пользователя, а также обработка стандартного выходного потока
и стандартного потока ошибок задания описано ниже (см. опцию -m).
Пользователям разрешается использовать команды at и batch
(см. ниже), если их регистрационные имена указаны в файле
/usr/lib/cron/at.allow. Если этот файл не существует, прверяется файл
/usr/lib/cron/at.deny, чтобы определить, не запрещен ли пользователю доступ к
at. Если ни один из файлов не существует, посылать задание может только
пользователь с привилегией solaris.jobs.user. Если существует только файл
at.deny, и он пустой, использовать утилиту разрешается всем.
Файлы at.allow и at.deny содержат по одному регисчтрационному имени
пользователя в строке.
Выдает информацию о всех запланированных заданиях вызвавшего пользователя, еслне заданы операнды
идентификатор_задания_at. Если идентфикаторы заданий указаны, выдает информацию только
об этих заданиях.
Посылает сообщение по электронной почте вызвавшему пользователю после запуска задания
at, уведомляющее о его выполнении. Стандартный выходной поток и стандартный поток
ошибок, выданные заданием at, тоже отправляютс пользователю по электронной почте,
если не перенаправлены. Сообщение будет послано, даже если задание ничего не выдало в потоки.
Если опция -m не указана, стандартный выходной поток и стандартный поток ошибок
задания будут направлены пользователю по электронной почте, если не перенаправлены; если
ничего в эти потоки не выдано, пользователь не уведомляется выполнении задания.
Задает, в каком проекте будет выполняться задание at или batch. При
использовании с опцией -l ограничивает поиск только
указанным проектом. Значения параметра проект будут интерпретироваться
сначала как имя, а потом как возможный идентификатор проекта, если состоят
исключительно из цифр. По умолчанию используется текущий проект пользователя.
Задает, в каку очередь поставить задание для выполнения. При использовании с опцией
-l ограничивает поиск указанной очередью. В качестве значений
параметра очередь могут использоваться только строчные буквы от a до z.
По умолчанию задания at помещаются в очередь a. Очередь b
зарезервирована для пакетных заданий batch. Поскольку очередь c зарезервирована
для заданий cron, ее нельзя указывать в опции -q.
Имя, выданное при вызове утилиты at, когда задание было
запланировано к выполнению.
спецификация_времени
Дата и время выполнения задания. Все операнды спецификация_вермени интерпретируются
так, как если бы они были разделены пробелами и конкатенированы. Дата и время
интерпретируются относительно часового пояса пользователя (задаваемого переменной
среды TZ), если только имя часового пояса не указано в
представленном ниже компоненте время.
В локали "C" три компонента строки спецификации времени можно описать
следующим образом. Все значения категорий LC_TIME в локали "C" распознаются
независимо от регистра.
Время может задаваться одной, двумя или четырьмя цифрами. Одно- и двузначные числа
считаются часами, а четырехзначные - часами и минутами. Время также можно задавать
двумя числами через двоеточие, - часов:минут. После времени
можно указывать признак времени суток (одно из значений для ключевого слова am_pm
в категории локали LC_TIME). Если он не указан, время считается заданным в
24-часовом формате. Далее может быть указано имя часового пояса, GMT, UCT
или ZULU (независимо от регистра), означающее, что время задано как
скоординированное универсальное время (Coordinated Universal Time).
Другие часовые пояса можно задавать с помощью переменной среды TZ. В поле времени
в локали "C" также может указываться одна из следующих лексем:
midnight
Обозначает время 12:00 am (12 ночи, 00:00 - полночь).
noon
Обозначет время 12:00 pm (12 дня - полдень).
now
Обозначает текущий день и время. При постановке задания now, оно отправляется
потенциально для немедленного выполнения (т.е. возможны только непредвиденные задержки
в связи с выполнением других заданий).
Необязательный параметр дата можно задавать в виде имени
месяца (одно из значений ключевых слов mon или abmon в категории
локали LC_TIME), за которым идет день месяца (и, возможно, год через запятую) или
день недели (одно из значений ключевых слов day или abday в категории локали
LC_TIME). В локали "C" распознаются две специальных даты:
today
Обозначает текущий день.
tomorrow
Обозначает следующий день.
Если дата не задана, предполагается текущий день, если указанное время превосходит текущее,
и следующий день, если не превосходит. Если указанный месяц - меньше текущего (и год не
задан), предполагается следующий год.
инкремент
Необязательный инкремент - это число, предваренное знаком плюс (+) и снабженное
одним из следующих суффиксов: minutes, hours, days, weeks,
months или years. (Форма единсвенного числа, без s, тоже поддерживается.) Ключевое слово next эквивалентно инкременту + 1. Например, следующие команды
эквивалентны:
Передставленный здесь формат командной строки at гарантированно работает
только в локали "C". В других локалях значения midnight, noon, now,
mon, abmon, day, abday, today, tomorrow,
minutes, hours, days, weeks, months, years и
next не поддерживаются.
Поскольку команды выполняются в отдельном экземпляре командного интерпретатора,
работающем в отдельной группе процессов и не связанном с управляющим терминалом,
дескрипторы открытых файлов, обработчики сигналов и приоритет из вызывающей среды
гне наследуются.
Чтобы задание само поставило себя на повторное выполнение, в тексте задания
можно выполнить команду at. Например, следующий "ежедневный сценарий"
по имени my.daily будет выполняться каждый день (хотя для подобного
рода задач лучше использовать механизм crontab):
# my.daily выполняется каждый день
at now tomorrow < my.daily
daily-processing
Три компонента спецификации времени в локали "C" позволяют эффективно его
задавать, если только интерпретируются однозначно. Вот некоторые примеры
указания времени выполнения задания:
at 0815am Jan 24
at 8 :15amjan24
at now "+ 1day"
at 5 pm FRIday
at '17
utc+
30minutes'
Описание следующих переменных среды:
LC_CTYPE, LC_MESSAGES, NLSPATH и LC_TIME,
влияющих на работу команд at и batch,
см. на странице справочного руководства environ(5).
SHELL
Задает командный интерпретатор, используемый для выполнения задания at. Если
эта переменная не установлена или имеет пустое значение, будет использоваться
командный интерпретатор sh. Если она имеет значение, отличное от sh, для
выполнения будет использоваться соответствующий командный интерпретатор; будет выдано
диагностическое сообщение, информирующее об используемом командном интерпретаторе.
TZ
Задает часовой пояс. Задание будет послано на выполнение в указанное
спецификацией_времени или аргументом опции -t время в часовом поясе, задаваемом
переменной TZ. Если в спецификации_времени указан часовой пояс, он
переопределяет значение, задаваемое переменной TZ. Если в спецификации_времени
часовой пояс не указан, а переменная TZ не устанволена или имеет пустое значение, будет
использован неопределенный стандартный часовой пояс.
DATEMSK
Если переменная среды DATEMSK установлена, утилита at будет использовать
ее значение как полное имя файла-шаблона, содержащего строки формата. Эти строки
состоят из спецификаторов формата и текстовых символов, и используются для расширения
набора допустимых форматов даты на разных языках путем соответствующих установок
переменных среды LANG или LC_TIME. Список допустимых спецификаторов формата
можно найти на странице справочного руководства getdate(3C).
Форматы аргументов времени и даты, описанные в разделе "ОПЕРАНДЫ",
специальные имена noon, midnight, now, next, today,
tomorrow и аргумент инкремент не распознаются, когда установлена переменная
DATEMSK.
Независимо от количества используемых очередей, демон
cron(1M) имеет ограничение - не более 100 выполняемых
заданий в каждый момент времени.
При выполнении заданий at демоном cron возможны задержки. В некоторых случаях,
эти задержки могут достигнуть такой продолжительности, что обработка заданий cron
кажется зависшей. Рано или поздно, все задания будут выполнены. При слишком продолжительных
задержках остается только остановить и перезапустить демон cron.