Linux периодическое выполнение команды
В этой статье мы расскажем , как использовать at и его компаньоны утилитами batch , atq , atrm просматривать, удалять и создавать новые рабочие места , которые должны выполняться в более позднее время.
Установка at
В зависимости от дистрибутива at может присутствовать или отсутствовать в вашей системе Linux.
Если at не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
- Установить at Ubuntu и Debian
- Установить at CentOS и Fedora
После установки программы убедитесь, что atd , демон планирования запущен и настроен на запуск при загрузке:
Как использовать команду at
Упрощенный синтаксис команды at выглядит следующим образом:
Команда at принимает дату и время ( runtime ), когда вы хотите выполнить задание, как параметр командной строки, и команду, которая должна быть выполнена из стандартного ввода.
Создадим задание, которое будет выполнено в 9:00:
Как только вы нажмете Enter , вам будет представлена командная строка at которая чаще всего начинается с at> . Вы также увидите предупреждение о том, в какой оболочке будет выполняться команда:
Введите одну или несколько команд, которые хотите выполнить:
Когда вы закончите вводить команды, нажмите Ctrl-D чтобы выйти из подсказки и сохранить задание:
Команда отобразит номер задания, время и дату выполнения.
Чтобы читать команды из файла вместо стандартного ввода, вызовите команду с параметром -f путь к файлу. Например, чтобы создать задание, которое будет запускать скрипт /home/linuxize/script.sh :
По умолчанию, если команда производит вывод, at отправит электронное письмо с выводом пользователю после завершения задания. Invoke at с -M опцией для подавления уведомлений по электронной почте:
batch команда
batch или его псевдоним at -b планирует задания и выполняет их в пакетной очереди, если позволяет уровень загрузки системы. По умолчанию задания выполняются, когда средняя загрузка системы ниже 1,5. Значение нагрузки можно указать при вызове демона atd . Если средняя загрузка системы выше указанной, задания будут ждать в очереди.
Чтобы создать batch задание, передайте команды, которые хотите выполнить:
Указание времени выполнения
Утилита at поддерживает широкий диапазон временных характеристик. Вы можете указать время, дату и приращение от текущего времени:
Время, дату и приращение можно комбинировать, вот несколько примеров:
- Запланируйте работу на ближайшее воскресенье на время на десять минут позже текущего:
- Запланируйте запуск задания на 13:00 через два дня:
- Запланируйте запуск задания на 12:30 21 октября 2020 г .:
- Запланируйте запуск задания через час:
Вы также можете указать время и дату в [[CC]YY]MMDDhhmm[.ss] используя параметр -t . Вот пример:
Указание очереди
По умолчанию задания, созданные с помощью at , планируются в очереди с именем a а задания, созданные с помощью batch , планируются в очереди b .
Запросы могут иметь имена от a до z и от A до Z Очереди с меньшими буквами работают с меньшей аккуратностью, что означает, что они имеют приоритет над очереди с более высокими буквами.
Вы можете указать очередь с помощью опции -q . Например, чтобы установить задание в L очередь, вы должны запустить:
Список незавершенных вакансий
Чтобы вывести список ожидающих заданий пользователя, выполните atq или at -l :
В выводе будут перечислены все задания, по одному в каждой строке. Каждая строка включает номер задания, дату, время, букву очереди и имя пользователя.
Когда atq вызывается от имени администратора, он перечисляет ожидающие задания всех пользователей.
Удаление незавершенных заданий
Чтобы удалить отложенное задание, atrm команду atrm или at -r после которой atrm номер задания. Например, чтобы удалить задание с номером девять, вы должны запустить:
Ограничение пользователей
/etc/at.deny и /etc/at.allow позволяют контролировать, какие пользователи могут создавать задания с помощью команды at или batch . Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.
По умолчанию существует только файл /etc/at.deny и он пуст, что означает, что все пользователи могут использовать команду at . Если вы хотите отказать в разрешении определенному пользователю, добавьте имя пользователя в этот файл.
Если файл /etc/at.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду at .
Если ни один из файлов не существует, только пользователи с правами администратора могут использовать команду at .
Выводы
Утилита at считывает команды со стандартного ввода и выполняет их позже. В отличие от crontab , задания, созданные с помощью at , выполняются только один раз.
Для получения дополнительной информации обо всех доступных параметрах команды at введите man at в вашем терминале.
Вы когда-нибудь были в ситуации, когда вам приходилось несколько раз запускать определенную команду Linux?
Ну, если вы еще не знаете , этот учебник научит вас, как это сделать.
Конечно, вы можете сделать это, используя скрипт оболочки или задания cron.
Кроме того, вы можете повторить команду Linux с определенным интервалом без необходимости вручную запускать ее каждый раз.
Вот где команда Watch пригодится.
Эта команда может использоваться для повторного выполнения данной команды и контроля вывода в полноэкранном режиме.
Чтобы выразить это простыми словами, мы можем использовать команду Watch для запуска команды Linux каждые X секунд навсегда, и команда будет продолжать отображать вывод в консоли до тех пор, пока мы не остановим ее вручную, нажав CTRL + C, или убейте процесс или заставьте систему перезагрузится .
По умолчанию программа запускается каждые 2 секунды, или вы можете определить временной интервал по вашему выбору.
Запуск команды Linux каждые X секунд
Синтаксис команды watch:
Ниже я привел пять примеров, объясняющих, где вы можете использовать команду watch для повторного запуска определенных команд Linux.
Пример 1:
Скажем, вы хотите запустить команду «uptime» каждые 2 секунды, чтобы контролировать время безотказной работы вашей системы.
Для этого просто запустите:
Это будет продолжаться до тех пор, пока вы не закончите вручную.
Чтобы выйти из команды, нажмите CTRL + C.
Пример 2
Как я упоминал ранее, команда watch выполняет программу каждые 2 секунды по умолчанию.
Мы можем изменить его на определенный интервал, например 5 секунд, используя параметр -n.
Отобразим использование дискового пространства файловой системы каждые 5 секунд.
Чтобы проверить, действительно ли эта команда работает, создайте или удалите любой файл / папку.
Вы заметите, что свободное пространство изменилось на выходе после создания или удаления файлов / папок.
Чтобы просмотреть содержимое каталога, запустите:
Здесь флаг «-d или -differences» будет выделять различия между последовательными обновлениями.
Кроме того, вы можете отображать содержимое изменения каталога, которое принадлежит определенному пользователю ( например sk).
Это может быть полезно в многопользовательской системе.
Пример 4
Чтобы отобразить информацию о памяти, запустите:
Пример 5
Для отображения вывода команды du каждые 10 секунд вы можете использовать:
Это действие отслеживает использование диска каждые 10 секунд, пока вы не выйдете из режима ti вручную.
Заключение
Теперь вы знаете, как выполнять команду каждые X секунд с помощью команды «watch».
Как правило, команда Watch используется для мониторинга использования диска и использования памяти.
Не путайте эту команду с другими инструментами мониторинга.
Эта команда намеревается выполнить команду каждую конкретную секунду всегда, пока вы ее не остановите вручную.
Планирование задач Linux, периодическое выполнение задач
каталог
Выполнить задачу в определенное время в будущем: в, партия
Периодически запускать задачу: cron
Почтовый сервис
SMTP: простой протокол передачи почты, используемый для отправки почты
POP3:Post Office Protocol
IMAP4:Internet Mail Access Protocol
MUA:Mail User Agent
mailx - send and receive Internet mail
mailx [-s 'SUBJECT'] username[@hostname]
Генерация почтового тела:
Дай прямо, Ctrl + d
(2) перенаправление ввода
echo -e "How are you?\nHow old are you?" | mail
Одна и одна миссия
noon, midnight, teatime
Обычно используемые варианты:
-L: список заданий, ожидающих запуска в указанной очереди, эквивалентно atq
-D: удалить указанное задание; эквивалентно atrm
-C: просмотреть конкретные рабочие задания
-F / path / from / somefile: чтение задач из указанного файла
Уведомлять связанных пользователей о результатах выполнения заданий P.S. по электронной почте
2.batch
Пусть система выберет свободное время для выполнения задач, указанных здесь
Во-вторых, периодический план задачи: cron
1. Связанные пакеты
cronie:Основной пакет, который предоставляет демон crond и связанные вспомогательные инструменты
cronie-anacron:Вспомогательная программа Cronie, используемая для контроля состояния выполнения задачи cronie; если задача в Cronie не выполнялась нормально в прошлом времени, анакрон запустит задачу впоследствии
crontabs:Содержит CentOS для выполнения задач по обслуживанию системы
Как убедиться, что демон crond запущен
systemctl status crond
service crond status
Отправляйте задачи, запланированные для периодического выполнения, в crond, который будет реализован до конца
Задачи cron системы: задания по обслуживанию системы
Задачи пользователя cron:
2. Системные задачи cron
Пример: запустить команду echo в 9:10 вечера;
10 21 * * * gentoo /bin/echo "Howdy!"
P.S. Команда здесь лучше всего использовать абсолютный путь
Представление времени:
Значение в пределах допустимого диапазона значений в данный момент времени. Это значение в данный момент времени.
Все значения в пределах допустимого диапазона значений в данный момент времени являются всеми значениями в пределах диапазона допустимых значений в данный момент времени.
⑤ Определите размер шага в указанном диапазоне времени:
Например: команда echo каждые 3 часа;
0 */3 * * * gentoo /bin/echo "howdy!"
3. пользователь cron
Команда crontab определяет, что у каждого пользователя есть отдельный файл задачи cron: / var / spool / cron / USERNAME
crontab [-u user] [-l | -r | -e] [-i]
-L: список всех задач
-E: редактирование задачи
-R: удалить все задачи
-I: использовать с -r, чтобы позволить пользователям выборочно удалять указанные задачи в интерактивном режиме
-u пользователь: может работать только root, управлять задачами cron для указанного пользователя
Уведомить связанных пользователей по электронной почте о результатах P.S.
Для задач cron% имеет специальное назначение: если вы хотите использовать% в команде, вам нужно его избежать, однако, если вы поместите% в одинарные кавычки, вы также можете выйти
мышление:
① Как мне запустить задачу на втором уровне?
* * * * * for min in 0 1 2; do echo "hi"; sleep 20; done
② Как добиться выполнения задачи каждые 7 минут?
sleep Команда:
Второй по умолчанию. Секунды, по умолчанию
Очки заключаются в следующем:
Часы: Часы: Часы: Часы: часы
Дни дня следующие:
обзор
Выполнить задачу сразу: при, партия
Циклически выполнять задачу: cron-> anacron
Ссылки:
Интеллектуальная рекомендация
Краткое описание общих функций MPI
содержание 1, основная функция MPI 2, точка-точка функция связи 3, коллективная функция связи 1, основная функция MPI MPI_Init(&argc, &argv) Информировать системы MPI для выполнения всех необх.
Примечание 9: EL выражение
JVM память
концепция Виртуальная машина JVM управляет собственной памятью, которая разделяет память во многие блоки, наиболее распространенной для памяти стека и памяти кучи. 1 структура виртуальной машины JVM H.
Проблема сетевого запроса на Android 9.0
вЗапустите Android 9 (API Уровень 28) или вышеНа устройстве операционной системы Android, чтобы обеспечить безопасность пользовательских данных и устройств, использование по умолчанию для зашифрованно.
Учебная запись по Webpack (3) В статье рассказывается о создании webpack4.0.
предисловие Для изучения веб-пакета автор также предпринял много обходных путей. Есть много вещей, которые я хочу знать, но я не могу их найти. Автор поможет вам быстро начать работу. Цель этой статьи.
Я пытаюсь найти простой способ повторного выполнения команды всякий раз, когда она завершается, по любой причине (ошибка или нет).
Как лучше всего подойти к этому?
РЕДАКТИРОВАТЬ: Я не был достаточно ясным, прежде чем. Мне нужно следующее выполнение, чтобы дождаться окончания предыдущего.
Команда watch будет повторять команду всегда с указанным интервалом:
Установка -n в ноль фактически устанавливает интервал в ничто (я думаю, что это действительно .1 секунды).
watch также имеют дополнительные преимущества выравнивания выходных данных, так что визуальные изменения могут быть легко видны, и имеют переключатель, чтобы выделить изменения с последнего запуска.
Это создает бесконечный цикл, выполняющий command снова и снова.
Простое решение будет:
; разделяет команды, позволяя использовать несколько команд в одной строке (Bash: Lists)
Вы можете планировать заранее во время выполнения команды (при условии, что она не является интерактивной) и ввести !! который выполнит предыдущую команду снова. Это работает, например, во время ping -c 5 .
Вы также можете определить функцию в bash :
Чтобы сохранить его, сохраните его в
Затем вы можете запустить свою команду следующим образом:
Если это определенная команда, которую вы хотите выполнить многократно (а не, например, какая-либо команда), вы можете заменить "$@" в этом фрагменте на вашу фактическую команду и назвать функцию, например, repeat_ping .
Чтобы сделать его бесконечным циклом, вы можете делать то, что предлагает @Dennis. Я рекомендую вам добавить период ожидания, если вы собираетесь использовать это в интерактивной оболочке, например:
В противном случае довольно неудобно прерывать этот бесконечный цикл с помощью Ctrl-Z .
Дайте while цикла логическое условие , например следующим образом :
Это будет выполняться снова и снова, пока bash не получит сигнал о прекращении процесса. Обычно в виде ctrl+c .
Вы также можете использовать команду watch для многократного запуска скрипта. Например, простые часы в вашем bash-терминале с использованием watch могут выглядеть так:
Опция -t указывает watch не отображать название процесса, который он запускает. Это дает чистый вывод только повторяющейся команды. Опция -n1 часы повторяться каждые n секунд. В этом случае -n1 будет интервалом в 1 секунду. Затем команда date +%T показывает время на момент завершения команды. Выполнение этой команды даст вам активные часы в вашем терминале.
Это, по существу такой же , как логическое значение во while цикла только с помощью рекурсивных вызовов функций.
(edit) Для того, чтобы помнить о ресурсах вашей машины, я добавил && wait чтобы при каждом запуске процесса циклы "ожидали", пока этот процесс не завершится со статусом выхода 0 до следующей итерации. Это полезно в интерактивном сценарии оболочки.
В этом коротком руководстве вы изучите два метода использования ограничения времени в ваших командах.
Запустите команды Linux с помощью инструмента timeout
В Linux есть утилита командной строки, называемая timeout, которая позволяет вам выполнять команду с ограничением по времени.
Его синтаксис выглядит следующим образом.
Чтобы использовать команду, вы указываете значение времени ожидания (в секундах) вместе с командой, которую хотите запустить. Например, чтобы тайм-аут команды ping завершился через 5 секунд, вы можете выполнить следующую команду.
Вам не нужно указывать (s) после номера 5 . Команда ниже та же самая и будет работать.
Другие суффиксы включают в себя:
Вы должны указать продолжительность, чтобы timeout узнал, через сколько времени должен быть отправлен сигнал уничтожения.
Например, показанная команда будет прекращена через 8 секунд.
Запуск команд Linux с помощью программы Timelimit
Программа Timelimit запускает данную команду, а затем завершает процесс через указанное время, используя данный сигнал. Сначала он передает предупреждающий сигнал, а затем по истечении времени ожидания отправляет сигнал уничтожения.
В отличие от опции timeout, Timelimit имеет больше опций, таких как killsig, warnsig, killtime и warntime.
Timelimit можно найти в репозиториях систем на основе Debian, и для их установки используйте следующую команду.
Для систем на основе Arch вы можете установить его с помощью вспомогательных программ AUR, например, Pacaur Pacman и Packer
В других дистрибутивах Linux вы можете скачать исходный код и установить его вручную.
После установки выполните следующую команду и укажите время. В этом примере вы можете использовать 10 секунд.
Обратите внимание, что если вы не задаете аргументы, Timelimit использует значения по умолчанию: warntime = 3600 секунд, warnsig = 15 , killtime = 120 и killsig = 9 .
Вывод
Из этого руководства вы узнали, как выполнять команды с ограничением по времени в Linux. В обзоре вы можете использовать команду Timeout или утилиту Timelimit .
Команда Timeout проста в использовании, утилита Timelimit немного сложна, но имеет больше опций. Вы можете выбрать наиболее подходящий вариант в зависимости от ваших потребностей.
Читайте также: