Linux запуск скрипта каждую секунду

Выполнение скрипта раз в 5 секунд Linux

Здравствуйте. Необходимо, чтобы скрипт /var/filter.sh запускался раз в 5 секунд без всяких команд. Т.е. один раз его запустил после перезагрузки ОС, а дальше он уже висел в процессах и выполнялся.

Вспомнил:
# watch —interval=5 /var/filter.sh

Можно вывод направить в /dev/null
# watch —interval=5 /var/filter.sh > /dev/null

Не совсем подходит под вашу цель, но возьмите на заметку.
Запускает с интервалом в 5 секунд ваш скрипт.
Единственное учтите, если ваш скрипт не будет успевать выполниться за пять секунд, то может быть эффект «лавинного рождения новых процессов». Особенно может возникнуть, если скрипт использует блокировки.

#!/bin/sh echo "Начинаем. " while (true) do echo "Ваш скрипт"; sleep 5; # пауза 5 секунд done;

Вообще для этого есть snaked.

Но если уж городить костыли, то:

#!/bin/bash while :; do sleep 5; flock -n /tmp/lock1 -c /var/script.sh & done

Эта конструкция будет запускать скрипт примерно каждые 5.04 секунды (помимо пяти секунд ещё будет тратиться время на вызов sleep и execve скрипта). При том само время работы скрипта уже не будет влиять на «каждые 5 секунд». Flock здесь нужен на тот случай, если скрипт «залипнет» — чтобы не плодить много запущенных копий скрипта в системе. Если скрипт ходит куда-то наружу или в базу — обязательно используйте flock.

Дальше нужно обеспечить надежный запуск самого цикла. Тут уже на помощь придет cron (вместе с flock). Добавляйте в /etc/crontab такую строку:
* * * * * root flock -n /tmp/lock2 -c /path/to/script2

Каждую минуту крон будет пытаться запустить вторую копию цикла, если lock2 занят — то запускать не будет.
Можно, конечно, просто добавить скрипт цикла в /etc/rc.local, но если он сдохнет — то уже потом не запустится.

Источник

Запуск команды каждую секунду в Linux

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

Приведём простейший пример. Допустим, что надо вывести текст «MouseDC» в консоль. Тогда потребуется такая BASH команда:

Читайте также:  Сколько всего дистрибутивов linux

А теперь если нужно выполнять эту команду каждые несколько секунд, то можно добавить в её начало слово «watch»:

Выполнение команды в консоли каждую секунду

Консоль начнёт распечатывать результат выполнения команды каждые две секунды: Если нужно задать определённую периодичность в секундах, то можно указать её после ключа «-n«. К примеру, так команда будет выполняться каждые 5 секунд:

Если команда очень длинная или составная (с использованием конвейера), то необходимо заключить её в двойные или одинарные кавычки:

watch -n 5 "echo MouseDC | grep Mouse"

Из дополнительных функций этой команды можно отметить выделение цветом тех частей вывода, которые отличались от предыдущего запуска. Делается это с помощью ключа «-d«. Попробуем продемонстрировать это поведение на выводе времени:

Запуск каждые 5 секунд с подсветкой изменений

Если запустить этот скрипт при дате, в которой цифра «50» стоит на последнем месте (секунды), то через одно выполнение цифра «5» будет подсвечена цветом как изменившееся часть ответа (было 50, стало 55):

Источник

Как запускать или повторять команду Linux каждые X секунд навсегда

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

В этом руководстве вы изучите простые методы написания сценариев для мониторинга или отслеживания конкретной команды в постоянно выполняющемся состоянии, аналогичном команде top (постоянно отслеживайте процесс и использование памяти) каждые 3 секунды по умолчанию.

Мы не будем останавливаться на обсуждении причин, почему вам нужно запускать команды так часто. Я считаю, что у каждого есть разные причины для этого в их повседневной работе или даже дома с ПК и ноутбуками.

1. Используйте команду часов

Watch – это команда Linux, которая позволяет вам периодически выполнять команду или программу, а также показывает результат на экране. Это означает, что вы сможете вовремя увидеть вывод программы. По умолчанию часы повторно запускают команду/программу каждые 2 секунды. Интервал можно легко изменить в соответствии с вашими требованиями.

Мониторинг использования памяти

«Watch» чрезвычайно прост в использовании, чтобы протестировать его, вы можете сразу запустить терминал Linux и ввести следующую команду:

Приведенная выше команда проверит свободную память вашей системы и обновит результаты свободной команды каждые две секунды.

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

Читайте также:  Intel hd graphics vulkan driver linux

Следующий закономерный вопрос — как изменить интервал выполнения. Для этого вы можете использовать параметр -n , который указывает интервал, с которым будет выполняться команда. Этот интервал указывается в секундах. Итак, допустим, вы хотите запускать файл script.sh каждые 10 секунд, вы можете сделать это следующим образом:

Обратите внимание: если вы запустите команду, как показано выше, вам потребуется cd в каталог (изучите 15 примеров команд cd ), где находится скрипт, или иным образом укажите полный путь к этому скрипту.

Другие полезные опции команды watch:

  1. -b — создает звуковой сигнал, если выход команды не равен нулю.
  2. -c — интерпретирует последовательности цветов ANSI.
  3. -d — выделяет изменения в выводе команды.

Отслеживайте вошедших в систему пользователей, время безотказной работы и среднюю нагрузку

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

Чтобы выйти из команды, нажмите CTRL+C .

Здесь команда uptime будет запущена и по умолчанию будет отображать обновленные результаты каждые 2 секунды.

Мониторинг выполнения команды копирования

В Linux при копировании файлов из одного места в другое с помощью команды cp ход данных не отображается, чтобы увидеть ход копирования данных, вы можете использовать watch вместе с командой du -s для проверки использования диска в режиме реального времени.

# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ & # watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso

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

2. Используйте команду сна

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

Если вы новичок в сценариях bash, вы можете ознакомиться с нашим руководством по циклам bash здесь.

Если вы впервые слышите о команде \sleep\ , она используется для задержки чего-либо на указанное время. В сценариях вы можете использовать его, чтобы указать вашему сценарию запустить команду 1, подождать 10 секунд, а затем запустить команду 2.

С помощью приведенных выше циклов вы можете указать bash запустить команду, заснуть на N количество секунд, а затем снова запустить команду.

Ниже вы можете увидеть примеры обоих циклов:

для цикла Пример

# for i in ; do echo -n "This is a test in loop $i "; date ; sleep 5; done

Приведенный выше один вкладыш запустит команду echo и отобразит текущую дату, всего 10 раз, с 5-секундным перерывом между выполнениями.

This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016 This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016 This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016 This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016 This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016 This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016 This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016 This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016 This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016 This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016

Вы можете заменить команды echo и date своими собственными командами или скриптом, а также изменить интервал ожидания в соответствии с вашими потребностями.

Читайте также:  Linux org ru vivaldi

в то время как пример цикла

# while true; do echo -n "This is a test of while loop";date ; sleep 5; done
This is a test of while loopWed Feb 17 20:52:32 EET 2016 This is a test of while loopWed Feb 17 20:52:37 EET 2016 This is a test of while loopWed Feb 17 20:52:42 EET 2016 This is a test of while loopWed Feb 17 20:52:47 EET 2016 This is a test of while loopWed Feb 17 20:52:52 EET 2016 This is a test of while loopWed Feb 17 20:52:57 EET 2016

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

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

Заключение

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

  1. Используйте cron, когда вам нужно периодически запускать команды даже после перезагрузки системы.
  2. Используйте методы, описанные в этом руководстве, для программ/скриптов, которые должны выполняться в текущем сеансе пользователя.

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

Источник

Оцените статью
Adblock
detector