Linux at как посмотреть расписание

Планирование задач при помощи программы at в Linux

В прошлой статье я рассказывал о программах cron и crontab , которые используются для планирования периодически повторяющихся действий в системе GNU/Linux.

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

Еще одной причиной использования at может быть ваше желание выполнить команду, занимающую много времени, и отключиться от сервера; программа at подойдет и для этой задачи, но я бы также порекомендовал ознакомиться со статьями о запуске команд в фоновом режиме и использовании утилиты screen .

Таким образом, главной задачей программы at является «планирование однократного исполнения задачи». В этом плане она похожа на программу cron , которая обычно используется для планирования периодически повторяющихся задач; давайте рассмотрим основные примеры использования этой программы.

Использование программы at

Просмотр всех запланированных задач при помощи atq

На мой взгляд, вывод программы не особенно полезен, так как вы не можете посмотреть, какая команда выполняется в рамках задачи с идентификатором 3 или любой другой задачи.

Она выведет длинный список переменных окружения для выполнения команды и саму команду:

Этот вывод позволяет гораздо лучше понять предназначение задачи.

Удаление запланированной задачи при помощи atrm

Мы научились просматривать список запланированных задач и при желании их содержимое, теперь настало время рассмотреть способ их удаления из очереди при помощи программы atrm или команды at -d для удаления определенной задачи.

Данная команда ничего не выводит в консоль, но после ее выполнения вы можете убедиться в удалении задачи при помощи команды atq .

Ограничение круга пользователей программы at

Файлы /etc/at.allow и /etc/at.deny устанавливают пользователей, которые могут планировать задачи для последующего исполнения при помощи программ at и batch . В качестве формата этих файлов используется простой список имен пользователей по одному в каждой строке. Использование пробелов в этих файлах не допускается.

Пользователь root может использовать программы at и batch при любых условиях.

Источник

Планирование заданий в Linux с помощью команды at

Главное меню » Linux » Планирование заданий в Linux с помощью команды at

Это можно сравнить с концепцией Crontab в Linux, которая является лучшим способом автоматизации повторяющихся задач.

В этой статье мы покажем, как вы можете использовать команду «at» для планирования выполнения задач и команд на определенное время в будущем.

Установка по команде в Linux

Прежде чем начать, вы должны проверить, установлено ли «at» в вашей системе. Он не установлен по умолчанию во всех операционных системах.

Вы можете проверить это, набрав:

Если программное обеспечение уже установлено, вернется номер версии. Если нет, его можно установить в системах на основе Debian, набрав:

Если вы используете другой дистрибутив Linux, то вам, возможно, придется изменить эту команду, чтобы отразить менеджер пакетов, используемый вашим дистрибутивом.

Начало

Утилита at на самом деле представляет собой серию команд, которые работают вместе для планирования заданий. Как мы уже упоминали, at предпочтительнее для ситуаций, когда ваша задача больше «одноразовая», чем повторяющееся событие.

Мы составили таблицу с некоторыми основными командами, связанными с at.

команда функция
at позволяет пользователю планировать задачу
atq выводит список заданий в очередь для вошедшего в систему пользователя или всех пользователей, если они запускаются как sudo
atrm удаляет задания по указанному номеру задания
batch указывает системе запускать задание только в указанное время, если загрузка системы находится на определенном уровне (средняя загрузка

Использование команды at в Linux для планирования заданий

Использование at имеет свой уникальный формат. Когда вы хотите запланировать работу, вы наберете в свой терминал:

Время является обязательным, но дата является необязательной. Если ничего не введено, будет сделано предположение на основе текущей даты и системного времени.

Когда вы нажмете Enter, вам будет предложено ввести команды. Вы можете ввести столько, сколько хотите. Введите Ctrl + D, чтобы сохранить и выйти.

Позвольте нам показать это вам с примерами.

Пример 1. Введите время/дату, используя естественный язык

У вас есть много разных вариантов ввода времени. В отличие от crontab с его довольно сложной системой, основанной на звездочках, «at» распознает «человеческий» ввод более эффективно.

Есть много человеческих подобных выражений, которые могут быть поняты с помощью программного обеспечения. Многие из них зависят от региона. Он может распознавать такие распространенные выражения, как «полночь» или «полдень». Он также может различать AM и PM. Кроме того, он может распознавать различные форматы для дней и дат, включая сокращения.

Он также может использовать выражение «сейчас». Вы можете просто ввести команду, как показано ниже, и она будет запущена через 5 минут.

Скорее всего, вы можете игнорировать предупреждение о bin /sh . Это может вызвать головную боль, если вы используете другую оболочку . Подавляющее большинство дистрибутивов Linux поставляются с bash, поскольку системная оболочка обозначается как «sh» … Это долгая история.

Итак, прошло около минуты, верно? Проверьте каталог для нового файла.

У вас должен быть файл с именем ‘message.txt’, содержащий наш текст.

Выглядит хорошо, но правильно ли он запечатлел наше сообщение? Давайте посмотрим содержимое файла :

Пример 2. Использование указанного времени/даты

Для своей первой работы вы использовали «относительное» время «now + [time]». Это очень простой способ составить график работы, но вам может потребоваться конкретнее.

На этот раз давайте наметим 2 задания в разное время.

Вы можете использовать файл message.txt (созданный в предыдущем примере) для демонстрации. Каждое задание заменит содержимое файла.

Вы можете проверить текущее время в вашей системе Linux с помощью команды date.

Настройте первую работу на определенное время (через 5 минут):

Настройте второе задание на определенное время (через 10 минут):

Проверьте в 3:45:

Проверьте в 3:50:

Пример 3. Просмотр всех заданий в очереди с помощью atq

В любое время вы можете проверить запланированные задания с помощью команды atq. В нем будут перечислены все текущие запланированные задания для пользователя, вошедшего в систему. Чтобы просмотреть все задания в системе, вам может потребоваться использование повышенных привилегий.

Каждое задание идентифицируется по идентификатору задания, назначенному времени и связанному пользователю.

Вы также можете просмотреть содержимое запланированного задания с опцией -c:

Пример 4. Удаление запланированного задания с помощью atrm

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

Как видите, задание 11 было удалено из очереди.

Пример 5: использование файла для команды at

Возможно, у вас есть набор сценариев, которые вы хотите выполнять нерегулярно, и cron не подходит. Вы можете ввести несколько заданий без использования стандартного ввода.

Давайте представим сценарий, в котором отдел кадров запрашивает документацию для компьютерной деятельности сотрудника, который, по их мнению, нарушает политику работы. Возможно, вы захотите, чтобы определенные журналы активности или другая историческая информация создавали для вас отчет в указанное время.

Вы можете сэкономить время, перечислив необходимые сценарии в текстовом файле, выполнив их с помощью at.

Вы поняли идею. Итак, теперь вы можете добавить -f к команде ‘at’ и включить имя файла после:

Пример 6. Запуск задания, когда загрузка процессора падает ниже порогового значения.

Пакетные задания будут выполняться, когда средняя загрузка ЦП по умолчанию опустится ниже 1,5.

Метод ввода пакетных заданий идентичен «at», за исключением того, что ему не нужно указывать время.

Если вы хотите изменить порог загрузки, вы можете сделать это с помощью следующей команды:

Где n – это порог загрузки, который вы хотите выбрать. Страница man рекомендует вам изменить его на значение выше n-1, где n – это количество процессоров в вашей системе .

Вывод

Спасибо за прочтение. Мы надеемся, что ваше понимание команды улучшилось. Если у вас есть какие-либо вопросы или вы хотите поделиться тем, как вы используете эту команду, сообщите нам! Оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Полезные советы по Linux cron и at

Описание: Вам требуется запустить задачу в полночь, когда нагрузка на систему минимальна, или есть задачи, которые должны выполняться ежедневно или еженедельно, но вы бы в это время предпочли поспать или как-то еще порадоваться жизни. Другой причиной использовать планировщик задач может быть желание автоматизировать выполнение рутинных задач или стремление обеспечить регулярность и единообразие выполнения определенных заданий. Данная статья поможет вам использовать возможности cron и at, чтобы планировать периодическое или однократное выполнение задач.

Системы Linux® и UNIX® позволяют планировать как однократное, так и периодическое выполнение задач. В этой статье, взятой из учебного пособия Подготовка к экзамену LPI 102: Задачи администрирования (LPI exam 102 prep: Administrative tasks), показано, как это делать.

В системе Linux многие административные задачи должны выполняться часто и регулярно. К таким задачам относится ротация log-файлов для предотвращения переполнения файловых систем, создание резервных копий и подсоединение к серверу времени с целью синхронизации системы. Узнать подробнее об этих административных задачах можно, заглянув в упомянутое выше учебное пособие. Из этой статьи вы узнаете о возможностях функцийcron и anacron и команд crontab и at, которые служат для планирования в Linux. Даже если система бездействует или выключена, anacron поможет ей наверстать упущенное, когда она заработает в следующий раз.

Выполняйте задачи через равные промежутки времени

Выполнение задач через равные промежутки времени управляется функцией cron, которая состоит из демона crond и набора таблиц, описывающих, какая работа и как часто должна выполняться. Демон просыпается каждую минуту и проверяет файлы расписаний (crontabs), чтобы определить, что нужно сделать. Пользователи управляют этими файлами с помощью команды crontab. Демон crond обычно запускается процессом инициализации (init) при загрузке системы.

Для простоты давайте представим, что вы хотите регулярно запускать команду, показанную в листинге 1. Она всего лишь сообщает дату и время, но на ее примере можно понять, как использовать crontab для установки заданий для cron, а из вывода мы узнаем, когда она была выполнена. Создание записей в файле расписаний требует строки со скрытыми метасимволами программной оболочки, поэтому лучше будет сделать это с помощью простых команд и параметров. В настоящем примере команда echo будет запускаться из скрипта /home/ian/mycrontab.sh, которому не нужны параметры. Таким образом, не потребутся кропотливая работа со скрытыми символами.

Листинг 1. Пример простой команды

]$ cat mycrontest.sh
#!/bin/bash
echo «It is now $(date +%T) on $(date +%A)»
[ian@lyrebird

]$ ./mycrontest.sh
It is now 18:37:42 on Friday

Создание файла расписаний

Для создания файла расписаний можно воспользоваться командой crontab с ключом -e (для редактирования, «edit»). В результате откроется редактор vi, если вы не указали другое приложение в переменной среды EDITOR или VISUAL.

Каждая запись в файле расписаний состоит из шести полей:

Строка, которая должна быть запущена при помощи sh

Минуты и часы должны быть в пределах от 0 до 59 и от 0 до 12 соответственно, а день месяца и месяц — от 1 до 31 и от 1 до 12, соответственно. День недели меняется от 0 до 6, где 0 соответствует воскресенью. Также он может обозначаться как sun, mon, tue и т.д. Шестое поле — это все, что идет за пятым и интерпретируется как строка для передачи в sh. Знак процента (%) передается как начало строки, поэтому если вы хотите использовать % или любой другой специальный символ, ставьте перед ним обратный слэш (\). Строка до первого % передается в программную оболочку, а все, что после %, идет в стандартный ввод.

Различные поля, относящиеся к времени, могут иметь одно конкретное значение, интервал значений, например 0-10 или sun-wed, или разделенный запятыми список отдельных значений или интервалов. В некоторой степени искусственно созданная запись в файле расписаний для команды из нашего примера может выглядеть как в примере из листинга 2.

Листинг 2. Пример простого файла расписаний

0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh

В этом примере наша команда будет выполняться в 0-ю, 20-ю и 40-ю минуту (каждые 20 минут) в часы между десятью вечера и полночью по пятницам и субботам июля. Подробную информацию о других способах указать время можно найти в справочнике man для crontab(5).

Как насчет вывода?

Вас может заинтересовать, что происходит с выводом команды. Большинство команд, работающих с функцией cron, направляет вывод в журнал при помощи функции syslog, которая обсуждается в учебном пособии Подготовка к экзамену LPI 102: Задачи администрирования (LPI exam 102 prep: Administrative tasks). Однако любой вывод, который направляется в stdout, будет отправлен пользователю по почте. В листинге 3 показан вывод, который пользователь может получить от команды из нашего примера.

Листинг 3. Вывод cron, полученный по почте

From
ian@lyrebird.raleigh.ibm.com Fri Jul 6 23:00:02 2007
Date: Fri, 6 Jul 2007 23:00:01 -0400
From:
root@lyrebird.raleigh.ibm.com (Cron Daemon)
To:
ian@lyrebird.raleigh.ibm.com
Subject: Cron /home/ian/mycrontest.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:

X-Cron-Env:
X-Cron-Env:
It is now 23:00:01 on Friday

Где находится мой файл расписаний?

Suid-программы

Suid-программы выполняются с правами владельца файла программы, а не с правами пользователя, в действительности запустившего программу. В учебном пособии Подготовка к экзамену LPI 101: Устройства, файловые системы Linux и стандарт Filesystem Hierarchy Standard вы найдете больше информации о suid, а в учебном пособии Подготовка к экзамену LPI 102: Задачи администрирования (LPI exam 102 prep: Administrative tasks) более подробно описана команда passwd.

Файл расписаний (crontab), который вы создали при помощи команды crontab, хранится в /etc/spool/cron под именем пользователя, создавшего его. Таким образом, файл расписаний, о котором речь шла выше, хранится в /etc/spool/cron/ian. Зная это, вы не удивитесь, что команда crontab, как и passwd, является suid-программой, которая выполняется с правами root.

В дополнение к пользовательским файлам расписаний в /var/spool/cron cron также проверяет /etc/crontab и файлы в каталоге /etc/cron.d. В этих системных файлах расписаний есть еще одно поле, между пятым, соответствующим дню недели, и командой. Оно определяет пользователя, для которого будет выполняться команда, как правило, этот пользователь — root. /etc/crontab может выглядеть, как пример из листинга 4.

Листинг 4. /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

В этом примере фактическая работа выполняется командой run-parts, которая запускает скрипты из /etc/cron.hourly, /etc/cron.daily и т.д.; /etc/crontab просто контролирует временной режим периодических заданий. Обратите внимание, что все команды здесь выполняются с правами root. Заметьте также, что файл расписаний может содержать присваивание переменных shell, которые будут установлены перед запуском команд.

Anacron

Функция cron хороша для систем, которые работают постоянно. В случаях, когда система может довольно долго находиться в выключенном состоянии, например в ноутбуках, плановый запуск задач, который обычно ежедневно, еженедельно или ежемесячно осуществляет cron, может выполнять функция anacron (что значит «анахроничный cron», «anachronistic cron»). Anacron не поддерживает ежечасное выполнение заданий.

Anacron хранит файлы с временными метками в /var/spool/anacron, делая в них записи, когда работа выполняется. При запуске anacron проверяет, сколько дней прошло с прошлого выполнения задания, и при необходимости запускает его. Таблица с заданиями для anacron хранится в файле /etc/anacrontab, формат которого немного отличается от /etc/crontab. Так же как и /etc/crontab, /etc/anacrontab может содержать установки среды. Каждому заданию соответствует четыре поля:

период
задержка
идентификатор задания
команда

Период — число дней, но можно определить его как @monthly, чтобы задание выполнялось только раз в месяц, независимо от того, сколько в нем дней. Задержка — сколько минут надо ждать от момента, когда задание готово к выполнению, до его запуска. Этим пользуются, чтобы избежать потока задач при включении системы. Идентификатор задания может содержать любой непустой символ, кроме слэшей (/).

И /etc/crontab, и /etc/anacrontab модифицируются непосредственным редактированием. Не надо использовать команду crontab, чтобы обновить эти файлы или файлы в каталоге /etc/cron.d.

Выполняйте задачи в определенное время

Бывает необходимо выполнить задачу лишь раз, а не делать это регулярно. С этой целью пользуйтесь командой at. Задания, которые должны быть выполнены, читаются из файла, указанного с флагом -f, или из стандартного ввода stdin, если -f не используется. Флаг -m отправляет письмо пользователю, даже если у команды нет стандартного вывода. Флаг -v показывает время, когда задание будет запущено перед чтением задания. Время также показывается в выводе.

В листинге 5 приведен пример работы сценария mycrontest.sh, который использовался ранее. В листинге 6 показан вывод, который отправляется пользователю после запуска задания. Обратите внимание, что он несколько более компактный, чем тот, что отсылается функцией cron.

Листинг 5. Использование команды at

]$ at -f mycrontest.sh -v 10:25
Sat Jul 7 10:25:00 2007

job 5 at Sat Jul 7 10:25:00 2007

Листинг 6. Вывод задачи, запущенной командой at

From
ian@lyrebird.raleigh.ibm.com Sat Jul 7 10:25:00 2007
Date: Sat, 7 Jul 2007 10:25:00 -0400
From: Ian Shields
ian@lyrebird.raleigh.ibm.com>
Subject: Output from your job 5
To:
ian@lyrebird.raleigh.ibm.com

It is now 10:25:00 on Saturday

Указание времени может быть достаточно сложным. В листинге 7 приведено несколько примеров. Более подробную информауию можно найти на страницах справочника man, посвященных команде at, в файле /usr/share/doc/at/timespec или в файле типа /usr/share/doc/at-3.1.10/timespec, где 3.1.10 соответствует версии пакета at.

Листинг 7. Значения времени в команде at

]$ at -f mycrontest.sh 10pm tomorrow
job 14 at Sun Jul 8 22:00:00 2007
[ian@lyrebird

]$ at -f mycrontest.sh 2:00 tuesday
job 15 at Tue Jul 10 02:00:00 2007
[ian@lyrebird

]$ at -f mycrontest.sh 2:00 july 11
job 16 at Wed Jul 11 02:00:00 2007
[ian@lyrebird

]$ at -f mycrontest.sh 2:00 next week
job 17 at Sat Jul 14 02:00:00 2007

Значение nice для задания отражает, насколько оно «доброжелательно» к работе других пользователей. Обратитесь к учебному пособию Подготовка к экзамену 101: Команды GNU и UNIX (LPI exam 101 prep: GNU and UNIX commands) за информацией о командах nice и renice.

Для команды at есть также опция -q (queue — очередность). Увеличение очередности увеличивает значение nice для задания. Существует также команда batch, которая похожа на at, за исключением того, что команды выполняются только когда система достаточно мало загружена. Более подробно эти свойства описаны на страницах справочника man.

Управляйте запланированными задачами

Просмотр запланированных задач

Задачами из cron и at можно управлять. Для просмотра списка задач служит команда crontab с ключом -l, а команда atq показывает задания, поставленные в очередь при помощи at, как показано в листинге 8.

Листинг 8. Отображение запланированных заданий

]$ crontab -l
0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh
[ian@lyrebird

]$ atq
16 Wed Jul 11 02:00:00 2007 a ian
17 Sat Jul 14 02:00:00 2007 a ian
14 Sun Jul 8 22:00:00 2007 a ian
15 Tue Jul 10 02:00:00 2007 a ian

Если вы хотите просмотреть фактические команды, намеченные для выполнения at, то можете воспользоваться командой at с ключом -c и номером задания. Вы заметите, что большая часть окружения, которая была активна в момент запуска команды at, сохраняется для запланированной задачи. В листинге 9 показана часть вывода для задания 15 из листингов 7 и 8. .

Листинг 9. Использование at -c с номером задания

#!/bin/sh
# atrun uid=500 gid=500
# mail ian 0
umask 2
HOSTNAME=lyrebird.raleigh.ibm.com; export HOSTNAME
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
SSH_CLIENT=9.67.219.151\ 3210\ 22; export SSH_CLIENT
SSH_TTY=/dev/pts/5; export SSH_TTY
USER=ian; export USER
.
HOME=/home/ian; export HOME
LOGNAME=ian; export LOGNAME
.
cd /home/ian || <
echo ‘Execution directory inaccessible’ >&2
exit 1
>
$
2>/dev/null|LC_ALL=C tr -d -c ‘[:alnum:]’)`

#!/bin/bash
echo «It is now $(date +%T) on $(date +%A)»

Обратите внимание, что содержимое нашего сценария было скопировано в виде встроенного документа, который будет выполнен программной оболочкой, определенной в переменной SHELL или /bin/sh, если переменная SHELL не установлена. В учебном пособии Подготовка к экзамену LPI 101, тема 103: Команды GNU и UNIX (LPI exam 101 prep, Topic 103: GNU and UNIX commands) можно посмотреть встроенные документы, если есть необходимость.

Удаление запланированных задач

Все запланированные в cron задачи можно удалить командой cron с ключом -r, как показано в листинге 10.

Листинг 10. Отображение и удаление заданий cron

]$ crontab -l
0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh
[ian@lyrebird

]$ crontab -r
[ian@lyrebird

]$ crontab -l
no crontab for ian

Для удаления системных задач cron или anacron отредактируйте /etc/crontab, /etc/anacrontab или отредактируйте или удалите файлы из каталога /etc/cron.d.

Одну или более задач, запланированных при помощи at, можно удалить командой atrm с указанием номера задания. Несколько заданий должны быть разделены пробелом. В листинге 11 приведен пример.

Листинг 11. Отображение и удаление заданий при помощи atq и atrm

]$ atq
16 Wed Jul 11 02:00:00 2007 a ian
17 Sat Jul 14 02:00:00 2007 a ian
14 Sun Jul 8 22:00:00 2007 a ian
15 Tue Jul 10 02:00:00 2007 a ian
[ian@lyrebird

]$ atrm 16 14 15
[ian@lyrebird

]$ atq
17 Sat Jul 14 02:00:00 2007 a ian

Настройте пользовательский доступ к планировщику задач

Источник

Читайте также:  Linux check user name
Оцените статью