Организация UNIX-систем и ОС Solaris

       

At


Для планирования однократного запуска задач в строго определенное время (точность - одна минута) используется программа at. Она создает и изменяет список задач для выполнения, размещая его в каталоге /var/spool/cron/atjobs/. В Solaris это именно такой каталог, в других системах местоположение очереди задач может быть иным. Список задач ежеминутно инспектируется демоном cron, который отвечает за своевременный запуск задач. Во многих других системах UNIX демон cron не отвечает за задания, запланированные с помощью at, а для последних имеется специальный демон-запускатель - atd.

Чтобы at могла верно запланировать задачи, следует указать ей время и дату запуска задачи:

at time date

Параметр time может быть задан в форме HH:MM (часы:минуты), или словом midnight, noon, now, или временем с суффиксом AM или PM в североамериканском формате. Дата должна быть либо в формате название_месяца день [год], либо MMDDYY, либо MM/DD/YY, либо DD.MM.YY. Также можно указать время в виде now+ n единицы, где единицы - это minutes, hours, days, weeks. Можно указать для времени суффикс today или tomorrow.

Указание time без date означает выполнение задачи в текущие сутки, а если time сегодня уже прошло, - назавтра в указанное время.

Программа at принимает список задач для выполнения во входной поток.

at -l (или atq) распечатывает список поставленных в очередь задач.

at -r позволяет удалить задачу по идентификатору, который показывает at -l.

В некоторых системах at -r называется atrm. В Solaris приемлемы оба варианта.

Суперпользователь всегда может воспользоваться at.

Обычному пользователю разрешается использовать at в случае, если его имя указано в файле /usr/lib/cron/at.allow. Если этого файла нет, то проверяется, нет ли имени пользователя в /usr/lib/cron/at.deny (если есть, ему запрещается использование at). Если ни одного из этих двух файлов нет, пользоваться at разрешается только пользователям, которым назначена роль solaris.jobs.user (по умолчанию - root). Если есть только файл /usr/lib/cron/at.deny и он пуст, то по умолчанию всем разрешено пользоваться at. В файлах at.deny и at.allow имена пользователей пишутся по одному в строке.

Задания at и crontab заблокированного пользователя не запускаются - демон cron запустит задания только того пользователя, который имеет легальный доступ в систему в настоящее время, как отражено в файле /etc/shadow.

Задание, запущенное на выполнение демоном cron, выполняется от имени пользователя, который поставил задание в очередь. Стандартный вывод и стандартный поток ошибок задания cron высылает почтой этому пользователю. Можно указать иное место для вывода информации с помощью ключа m команды at или с помощью параметра в файле crontab (см. ниже). Запланированные задачи выполняются в среде командного процессора /bin/sh без назначения управляющего терминала (т.е. вне терминальной группы, связанной с конкретным терминалом).

Проведем небольшой эксперимент. Вначале убедимся, что каталог, где сохраняются задания at, пуст:


#ls /var/spool/cron/atjobs/ #

Проверим время и дату:

date Сбт 15 Май 2004 19:10:29

Запланируем создание файла в корневом каталоге через две минуты:

at 1912 at> touch /tuition at> <Ctrl-D> commands will be executed using /sbin/sh job 1084633920.a at Сбт Май 15 19:12:00 2004

В каталоге, где собираются задания в очереди на выполнение, появился новый файл:

ls /var/spool/cron/atjobs/ 1084633920.a

И по команде at -l мы получаем информацию о поставленном в очередь задании (указывается имя пользователя, инициировавшего задание, идентификатор задания, по которому его можно удалить, и время планируемого запуска):

at -l user = root 1084633920.a Сбт Май 15 19:12:00 2004

Пока в корневом каталоге файла tuition нет:

ls / bin devices lib opt tmp xfn boot etc lost+found platform TT_DB cdrom export mnt proc usr core home net sbin var dev kernel nsmail test vol

Почему? Да время еще не наступило:

date Сбт 15 Май 2004 19:11:42

Дожидаемся заданного времени и (о чудо!) файл /tuition появился! Смотрите:

date Сбт 15 Май 2004 19:12:12

ls / bin devices lib opt tmp vol boot etc lost+found platform TT_DB xfn cdrom export mnt proc tuition core home net sbin usr dev kernel nsmail test var


Содержание раздела