- Выполнение команды по времени linux
- Как запустить команду на определенное время в Linux
- Выполнить команду в течение определенного времени в Linux
- Метод 1 – Использование команды « timeout »
- Скрипты и планировщик задач в ОС Linux
- Как запускать команду Linux каждые X секунд навсегда
- Запуск команды Linux каждые X секунд
- Пример 1:
- Пример 2
- Пример 4
- Пример 5
- Заключение
Выполнение команды по времени linux
Команды batch и at позволяют вам определять время запуска команды или последовательности команд. При помощи команды batch система определяет время запуска команды, вы это можете определить с помощью команды at . Обе команды ожидают ввод со стандартного ввода (терминала); список команд, вводимых с терминала, должен завершаться нажатием клавиши ^d (одновременное нажатие клавиши Ctrl и клавиши d).
Команда batch очень полезна, если вы запускаете процесс или программу, которые занимают много системного времени. Команда batch представляет системе задание (содержащее последовательность команд для выполнения). Задание ставится в очередь и запускается как только у системы появляется возможность. Это позволяет системе быстро отвечать на запросы других пользователей. Общий формат команды batch : Если запускается только одна команда, то ее можно ввести в одной командной строке:
В следующем примере batch используется для выполнения команды grep в согласованное время. Команда grep осуществляет поиск всех файлов в текущем каталоге и перенаправляет вывод в файл dol.file.
После того как вы зададите задание batch , система выдаст ответ, в котором даны номер задания, дата и время. Номер задания не то же самое, что номер процесса, который система генерирует, когда вы запускаете команду в фоновом режиме.
Команда at позволяет вам указывать точное время выполнения команд. Общий формат команды at : Аргумент time состоит из времени дня и даты, если дата не сегодняшняя.
В следующем примере показано, как использовать команду at для посылки сообщения happy birthday пользователю с регистрационным именем emily:
Обратите внимание, что команда at подобно команде batch выдает ответ с номером задания, датой и временем.
Если вы не хотите, чтобы команды, находящиеся в данный момент в очереди заданий batch или at были выполнены, то можете удалить их из очереди. Для этого воспользуйтесь опцией -r в команде at , указав ее с номером задания. Общий формат такой команды: Если вы забыли номер задания, то команда at -l распечатает вам список текущих заданий в очереди batch или at , как показано на следующем экране:
Таким образом команда at выполняет команды в указанное время. Вы можете использовать от одной до 4-х цифр и буквосочетания «am» и «pm», чтобы указать время. Чтобы указать дату, задайте имя месяца и вслед за ним число. Если задание должно быть выполнено сегодня, то дату вводить не надо.
Источник
Как запустить команду на определенное время в Linux
На днях я переносил большой файл с помощью rsync в другую систему в моей локальной сети.
Поскольку это очень большой файл, для его завершения потребовалось около 20 минут.
Я не хочу ждать так долго, а также я не хочу вручную завершать процесс нажатием CTRL + C.
Мне просто интересно, могут ли быть какие-нибудь простые способы запустить команду в течение определенного времени и автоматически убить ее, как только истечет время в Unix-подобных операционных системах – отсюда и этот пост.
Выполнить команду в течение определенного времени в Linux
Метод 1 – Использование команды « timeout »
Команда timeout является частью пакета GNU coreutils, поэтому она предустановлена во всех системах GNU / Linux.
Допустим, вы хотите запустить команду только в течение определенного времени, а затем автоматически убить ее по истечении этого времени. Для этого мы используем:
Например, следующая команда прекратит работу через 10 секунд.
Другие доступные суффиксы:
“m” в течение нескольких минут,
“h” Часы
“ d” в течение нескольких дней.
Если вы запустите эту команду tail -f /var/log/pacman.log, она будет работать до тех пор, пока вы не завершите ее вручную, нажав CTRL + C.
Однако, если вы запустите его вместе с командой timeout, он будет автоматически убит через заданный интервал времени.
На всякий случай, если команда все еще выполняется даже после истечения времени ожидания, вы можете отправить сигнал уничтожения, как показано ниже.
В этом случае, если команда tail все еще выполняется через 10 секунд, команда timeout отправит ему сигнал уничтожения через 20 секунд и завершит его.
Команда Tmeout может быть особенно полезна при устранении неполадок оборудования.
Например, выполните следующую команду, чтобы отобразить все сообщения из кольцевого буфера ядра, но только в течение 10 секунд.
Для более подробной информации, обратитесь к справочным страницам.
Источник
Скрипты и планировщик задач в ОС Linux
В данном посте обсуждаются базовые принципы написания скриптов и работа планировщика заданий в Oracle Linux. Рассматриваются следующие вопросы:
- Скрипты в ОСLinux
- Что такое планировщик заданий
- Работа сервисаcron
- Примеры
1. Скрипты в ОС Linux
Скрипты в ОС на базе Linux – это набор команд, записанных в файл. Это делается с целью быстрого и удобного вызова последовательности этих команд. Скрипты могут выполнять самые разные задачи – от автоматизации рутинных действий системного администратора до реализации сложных алгоритмов для ИТ инфраструктуры. При этом результаты работы команд могут служить входными данными для других задач (команд).
Для того, чтобы превратить файл с набором команд в скрипт, понадобятся две вещи. Во-первых, в первой строке пустого файла необходимо прописать путь к командной оболочке, которая будет исполнять данный файл. В большинстве дистрибутивов Linux данной оболочкой является Bash, и соответственно первой строкой будет #!/bin/bash. В других строках символ решетки используется для обозначения комментариев, которые не будут обработаны оболочкой. Однако, первая строка — это особый случай, здесь решетка, за которой следует восклицательный знак (эту последовательность называют шебанг) и путь /bin/bash, указывают системе что данный скрипт создан именно для оболочки bash. Во вторых, чтобы скрипт запустить как исполняемый файл, ему необходимо дать права на исполнение, иначе, попытка его запуска даст ошибку Permission denied.
Пример ошибки, когда запускается неисполняемый файл:
Права на исполнение даются командой chmod. Например,
chmod +x filename.sh
Данная команда дает всем пользователям операционной системы право на запуск файла с именем filename.sh
Право на запуск того же файла только владельцу можно дать следующей командой: chmod u+x filename.sh.
Расширение .sh не обязательно, но таким образом легче определять, какой файл является скриптом.
Ниже рассматривается пример написания простейшего скрипта, копирующего все файлы из папки /home/rustam/Documents в папку /tmp/backup.
При работе со скриптами могут использоваться переменные. Они позволяют хранить в файле сценария различную информацию, например, результаты работы одних команд для дальнейшего их использования для других команд.
Исполнение отдельных команд без хранения результатов работы ограничивают их возможности.
Существуют два типа переменных, которые используются в bash-скриптах:
Используются при необходимости работы с системными данными в командах оболочки. Например, требуется вывести домашнюю директорию текущего пользователя. Список переменных для среды конкретного пользователя выдается командой env.
Можно использовать системную переменную $HOME в двойных кавычках, что не помешает ее распознаванию системой.
В дополнение к переменным среды, bash-скрипты позволяют задавать и использовать в скрипте свои собственные переменные. Подобные переменные хранят значение до тех пор, пока не завершится выполнение сценария. Как и в случае с системными переменными, к пользовательским переменным обращаются используя знак доллара:
Дополним соответствующим образом скрипт, написанный ранее – добавляется переменная для хранения пути к папке, в которую осуществляется копирование.
2. Что такое планировщик заданий. Работа сервиса cron.
Часто возникают ситуации, в которых приходится автоматизировать различные задачи по обслуживанию и работе с Linux с помощью скриптов. В этом случае удобно, если скрипт выполняет необходимые команды без участия пользователя. Для этого настраивается автоматический запуск требуемого скрипта в заданное время.
Для указанной настройки в Linux используется системный сервис cron. Это планировщик, который позволяет выполнять необходимые скрипты раз в час, раз в день, неделю или месяц, а также в любое заданное время или через любой интервал времени. Сервис cron также часто используется другими службами операционной системы.
Как и большинство других сервисов Linux, cron запускается при старте системы и работает в фоновом режиме. Его основная задача – выполнять требуемые процессы в заданное время. Существует несколько конфигурационных файлов, из которых берется информация о том, что и когда нужно выполнять. Cron открывает файл /etc/crontab, в котором указываются необходимые данные.
Для настройки времени, даты и интервала выполнения задания, используется специальный синтаксис файла cron и специальная команда. Не рекомендуется непосредственно редактировать файл /etc/crontab. Вместо этого используется команда crontab. Ниже запускается команда crontab с ключом –e для редактирования файла
Рекомендуется ее выполнять с опцией -e, тогда для редактирования правил используется текстовый редактор по умолчанию. После выполнения команды открывается временный файл, в котором записаны текущие правила cron и есть возможность добавлять новые. Добавленные правила запускаются именно от того пользователя, от имени которого они были добавлены.
Файлы crontab, используемые для управления работой планировщика, располагаются в каталоге /etc/cron.d/. Кроме того, в каталогах /etc/cron.daily/, /etc/cron.weekly/ и /etc/cron.monthly/ размещаются автоматически запускаемые программы (ежедневно, еженедельно или ежемесячно).
Вывод содержимого текущего файла позволяет команда:
Таблица crontab состоит из 6 колонок, которые разделяются пробелами или табуляторами. Первые пять колонок отвечают за время выполнения, соответственно, минута, час, день месяца, месяц, день недели. В них может находиться: число, список чисел (1,2,3), диапазон чисел (1-3), символы * или /. Все остальные символы в строке интерпретируются как выполняемая команда с ее параметрами – можно указать как саму команду (например, echo “Доброе утро”), так и путь к исполняемому скрипту.
Как запускать скрипты через cron
Скрипты запускаются через cron, указанием команды либо пути к скрипту в последней колонке.
Обязательно требуется прописывать полный путь к команде, так как для команд, запускаемых от имени сервиса cron, переменная пользовательской среды PATH будет отличаться, и сервис не сможет найти команду.
Пример запуска ранее созданного скрипта filename.sh, который копирует файлы каждый день в 23:00:
или копирует файлы каждые 5 минут:
3. Примеры
Ниже приведены примеры настройки и работы cron:
0 17 * * 1-5 echo “Рабочий день закончен – эта надпись выводится в 17:00 с понедельника по пятницу”
15 6 * * sun echo “Выполняется в 6:15 в воскресенье”
30 12,13 * * 1,3 echo “Эта надпись выводится в понедельник и среду в 12:30 и 13:30”
Источник
Как запускать команду Linux каждые X секунд навсегда
Вы когда-нибудь были в ситуации, когда вам приходилось несколько раз запускать определенную команду Linux?
Ну, если вы еще не знаете , этот учебник научит вас, как это сделать.
Конечно, вы можете сделать это, используя скрипт оболочки или задания cron.
Кроме того, вы можете повторить команду Linux с определенным интервалом без необходимости вручную запускать ее каждый раз.
Вот где команда Watch пригодится.
Эта команда может использоваться для повторного выполнения данной команды и контроля вывода в полноэкранном режиме.
Чтобы выразить это простыми словами, мы можем использовать команду Watch для запуска команды Linux каждые X секунд навсегда, и команда будет продолжать отображать вывод в консоли до тех пор, пока мы не остановим ее вручную, нажав CTRL + C, или убейте процесс или заставьте систему перезагрузится .
По умолчанию программа запускается каждые 2 секунды, или вы можете определить временной интервал по вашему выбору.
Запуск команды Linux каждые X секунд
Синтаксис команды watch:
Ниже я привел пять примеров, объясняющих, где вы можете использовать команду watch для повторного запуска определенных команд Linux.
Пример 1:
Скажем, вы хотите запустить команду «uptime» каждые 2 секунды, чтобы контролировать время безотказной работы вашей системы.
Для этого просто запустите:
- Every 2.0s: время безотказной работы – команда «uptime» запускается каждые 2 секунды и отображает результат.
- sk – текущий пользователь
- Wed Feb 9 20:14:46 2018 – текущая дата и время, когда мы выполнили команду.
Это будет продолжаться до тех пор, пока вы не закончите вручную.
Чтобы выйти из команды, нажмите CTRL + C.
Это может быть полезно, если вы хотите отправить время безотказной работы вашей системы на техническую поддержку для получения справки.
Пример 2
Как я упоминал ранее, команда watch выполняет программу каждые 2 секунды по умолчанию.
Мы можем изменить его на определенный интервал, например 5 секунд, используя параметр -n.
Отобразим использование дискового пространства файловой системы каждые 5 секунд.
Чтобы проверить, действительно ли эта команда работает, создайте или удалите любой файл / папку.
Вы заметите, что свободное пространство изменилось на выходе после создания или удаления файлов / папок.
Чтобы просмотреть содержимое каталога, запустите:
Здесь флаг «-d или -differences» будет выделять различия между последовательными обновлениями.
Кроме того, вы можете отображать содержимое изменения каталога, которое принадлежит определенному пользователю ( например sk).
Это может быть полезно в многопользовательской системе.
Пример 4
Чтобы отобразить информацию о памяти, запустите:
Пример 5
Для отображения вывода команды du каждые 10 секунд вы можете использовать:
Это действие отслеживает использование диска каждые 10 секунд, пока вы не выйдете из режима ti вручную.
Заключение
Теперь вы знаете, как выполнять команду каждые X секунд с помощью команды «watch».
Как правило, команда Watch используется для мониторинга использования диска и использования памяти.
Не путайте эту команду с другими инструментами мониторинга.
Эта команда намеревается выполнить команду каждую конкретную секунду всегда, пока вы ее не остановите вручную.
Источник