|
Навигация
|
Главная » Linux Планирование задач при помощи программы at в LinuxИсточник: rus-linux А.Панин В прошлой статье я уже рассказывал о программах cron и crontab, которые используются для планирования периодически повторяющихся действий в системе GNU/Linux.Но в некоторых случаях вам может потребоваться однократно выполнить задачу в заданное время, как раз для этой цели лучше всего подходит программа at, которая также позволяет выполнять команды во время снижения загрузки системы. Еще одной причиной использования at может быть ваше желание выполнить команду, занимающую много времени, и отключиться от сервера; программа atподойдет и для этой задачи, но я бы также порекомендовал ознакомиться со статьями о запуске команд в фоновом режиме и использовании утилиты screen. Таким образом, главной задачей программы at является "планирование однократного исполнения задачи". В этом плане она похожа на программу cron, которая обычно используется для планирования периодически повторяющихся задач; давайте рассмотрим основные примеры использования этой программы. Программа at является частью набора, состоящего из четырех программ: at, batch, atq и atrm:
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 #!/bin/sh # atrun uid=1000 gid=1000 # mail linuxaria 0 umask 22 SSH_AGENT_PID=1579; export SSH_AGENT_PID XDG_SESSION_COOKIE=586bed7d66c5f3bf0810f6ce0000001c-1350495018.439467-8023144; export XDG_SESSION_COOKIE WINDOWID=25165830; export WINDOWID GNOME_KEYRING_CONTROL=/tmp/keyring-m0UVoj; export GNOME_KEYRING_CONTROL USER=linuxaria; export USER LIBGL_DRIVERS_PATH=/usr/lib/fglrx/dri:/usr/lib32/fglrx/dri; export LIBGL_DRIVERS_PATH SSH_AUTH_SOCK=/tmp/ssh-DbbUjzXR1501/agent.1501; export SSH_AUTH_SOCK USERNAME=riccio; export USERNAME SESSION_MANAGER=local/mint-desktop:@/tmp/.ICE-unix/1501,unix/mint-desktop:/tmp/.ICE-unix/1501; export SESSION_MANAGER DEFAULTS_PATH=/usr/share/gconf/default.default.path; export DEFAULTS_PATH XDG_CONFIG_DIRS=/etc/xdg/xdg-default:/etc/xdg; export XDG_CONFIG_DIRS PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games; export PATH DESKTOP_SESSION=default; export DESKTOP_SESSION PWD=/tmp; export PWD GNOME_KEYRING_PID=1424; export GNOME_KEYRING_PID LANG=en_US.UTF-8; export LANG MANDATORY_PATH=/usr/share/gconf/default.mandatory.path; export MANDATORY_PATH MDM_XSERVER_LOCATION=local; export MDM_XSERVER_LOCATION SHLVL=1; export SHLVL HOME=/home/linuxaria; export HOME LOGNAME=linuxaria; export LOGNAME XDG_DATA_DIRS=/usr/share/default:/usr/local/share/:/usr/share/:/usr/share/mdm/; export XDG_DATA_DIRS DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-QWgLeCbkps,guid=b1c32f270937311ee26524ff00000031; export DBUS_SESSION_BUS_ADDRESS MDMSESSION=default; export MDMSESSION WINDOWPATH=8; export WINDOWPATH MDM_LANG=en_US.UTF-8; export MDM_LANG XAUTHORITY=/home/linuxaria/.Xauthority; export XAUTHORITY COLORTERM=gnome-terminal; export COLORTERM cd /tmp // { echo 'Execution directory inaccessible' >&2 exit 1 } cp -a /project/source/* /backup/source/^C Этот вывод позволяет гораздо лучше понять предназначение задачи. Удаление запланированной задачи при помощи 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, для которых планирование задач запрещено. Изучаем команды Linux: paste. IBM Rational Suite Development Studio for UNIX. Поиск файлов в Linux при помощи команды locate. Файловая система /proc в Linux как инструмент разработчика. Для ядра Linux представлены патчи, отключающие поддержку спящего режима при загрузке с UEFI Secure Boot. Главная » Linux |
© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено. |