Планирование задач при помощи программы at в LinuxИсточник: rus-linux А.Панин
В прошлой статье я уже рассказывал о программах cron и crontab, которые используются для планирования периодически повторяющихся действий в системе GNU/Linux. Но в некоторых случаях вам может потребоваться однократно выполнить задачу в заданное время, как раз для этой цели лучше всего подходит программа at, которая также позволяет выполнять команды во время снижения загрузки системы. Еще одной причиной использования at может быть ваше желание выполнить команду, занимающую много времени, и отключиться от сервера; программа atподойдет и для этой задачи, но я бы также порекомендовал ознакомиться со статьями о запуске команд в фоновом режиме и использовании утилиты screen. Таким образом, главной задачей программы at является "планирование однократного исполнения задачи". В этом плане она похожа на программу cron, которая обычно используется для планирования периодически повторяющихся задач; давайте рассмотрим основные примеры использования этой программы. Программа at является частью набора, состоящего из четырех программ: at, batch, atq и atrm:
Использование программы atПосле запуска at предлагает вам ввести последовательность команд для выполнения. Чтобы закончить ввод команд, следует использовать комбинацию клавиш CTRL-D. Описание основных параметров командной строки at приведено ниже: at [-m] [-q очередь] [-f файл] ВРЕМЯ Значение этих параметров:
Примеры Во время проведения тестов точное время было следующим: #date Wed Oct 17 22:31:05 CEST 2012 В том случае, если задать только время, задача будет запланирована на следующий момент достижения этого времени, например, я задал время 20.00, а исполнение задачи было запланировано на следующий день в это время: #at -f my_at_test.sh 20:00 warning: commands will be executed using /bin/sh job 4 at Thu Oct 18 20:00:00 2012 При этом, если задать время, которое еще не наступило сегодня, исполнение задачи будет запланировано на этот же день: #at -f my_at_test.sh 22:35 warning: commands will be executed using /bin/sh job 5 at Wed Oct 17 22:35:00 2012 А это еще один пример с использованием сочетания клавиш CTRL+D для завершения ввода команд: at midnight Friday warning: commands will be executed using /bin/sh at> cp -a /project/source/* /backup/source/^C at> job 6 at Fri Oct 19 00:00:00 2012 Просмотр всех запланированных задач при помощи atqВы можете использовать программу atq в качестве альтернативы команде at -l для просмотра списка запланированных или выполняющихся в данный момент задач, а единственным аргументом этой программы является -q для указания определенной очереди. #atq 3 Thu Oct 18 10:25:00 2012 a linuxaria 4 Thu Oct 18 20:00:00 2012 a linuxaria 6 Fri Oct 19 00:00:00 2012 a linuxaria На мой взгляд, вывод программы не особенно полезен, так как вы не можете посмотреть, какая команда выполняется в рамках задачи с идентификатором 3 или любой другой задачи. Для того, чтобы увидеть, что будет выполняться в рамках задачи, вы можете использовать следующую команду: at -c идентификатор_задачи Она выведет длинный список переменных окружения для выполнения команды и саму команду: #at -c 6 Этот вывод позволяет гораздо лучше понять предназначение задачи. Удаление запланированной задачи при помощи atrmМы научились просматривать список запланированных задач и при желании их содержимое, теперь настало время рассмотреть способ их удаления из очереди при помощи программы atrm или команды at -d для удаления определенной задачи. Таким образом, для удаления задачи с идентификатором 3, вам необходимо просто ввести команду: atrm 3 Данная команда ничего не выводит в консоль, но после ее выполнения вы можете убедиться в удалении задачи при помощи команды atq. Ограничение круга пользователей программы atФайлы /etc/at.allow и /etc/at.deny устанавливают пользователей, которые могут планировать задачи для последующего исполнения при помощи программat и batch. В качестве формата этих файлов используется простой список имен пользователей по одному в каждой строке. Использование пробелов в этих файлах не допускается. Пользователь root может использовать программы at и batch при любых условиях. В случае существования файла /etc/at.allow, на его основе устанавливается круг пользователей, которым разрешено планирование задач, но обычно в системах этого файла не существует. Если файла /etc/at.allow не существует, проверяется файл /etc/at.deny, который обычно содержит длинный список "системных пользователей", таких какbin, backup, ftp или www-data, для которых планирование задач запрещено. |