Linux периодическое выполнение команды

Обновлено: 08.07.2024

В этой статье мы расскажем , как использовать 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 до следующей итерации. Это полезно в интерактивном сценарии оболочки.

timeout linux

В этом коротком руководстве вы изучите два метода использования ограничения времени в ваших командах.

Запустите команды 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 немного сложна, но имеет больше опций. Вы можете выбрать наиболее подходящий вариант в зависимости от ваших потребностей.

Читайте также: