- Как запускать команду Linux каждые X секунд навсегда
- Запуск команды Linux каждые X секунд
- Пример 1:
- Пример 2
- Пример 4
- Пример 5
- Заключение
- Команда watch в Linux
- Как использовать команду watch
- Как изменить временной интервал
- Подчеркивая разницу между обновлениями
- Команды с конвейерами
- Выводы
- Есть ли лучший способ запустить команду N раз в bash?
- 19 ответов
- Самые полезные приёмы работы в командной строке Linux
- Вывод результатов работы команд в виде таблицы
- Многократный повтор команды до её успешного завершения
- Сортировка процессов по используемой памяти
- Сортировка процессов по использованию ресурсов CPU
- Одновременный просмотр нескольких лог-файлов
- Возврат к предыдущей директории
- Мониторинг с регулярными интервалами
- Продолжение выполнения программы после окончания сессии
- Автоматический ответ yes или no
- Создание файла заданного размера
- Выполнение последней команды с root-привилегиями
- Создание протокола терминальной сессии
- Замена пробелов на знаки табуляции
- Замена строчных букв на прописные
- Автоматическое формирование списка аргументов для команд: xargs
- Итоги
Как запускать команду 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 используется для мониторинга использования диска и использования памяти.
Не путайте эту команду с другими инструментами мониторинга.
Эта команда намеревается выполнить команду каждую конкретную секунду всегда, пока вы ее не остановите вручную.
Источник
Команда watch в Linux
В этом руководстве мы познакомим вас с командой watch .
watch используется для запуска любой произвольной команды через равные промежутки времени и отображает вывод команды в окне терминала.
Это полезно, когда вам нужно многократно выполнять команду и наблюдать, как выходные данные команды меняются с течением времени. Например, вы можете использовать команду watch для отслеживания времени безотказной работы системы или использования диска.
Утилита watch является частью пакета procps (или procps-ng ), который предварительно установлен почти во всех дистрибутивах Linux.
Как использовать команду watch
Синтаксис команды watch следующий:
Чтобы лучше проиллюстрировать, как работает команда watch давайте запустим команду date :
Как вы можете видеть на изображении выше, команда watch временно очистит все содержимое терминала и начнет выполнение предоставленной команды через равные промежутки времени. При использовании без какой-либо опции watch будет запускать указанную команду каждые две секунды.
В верхнем левом углу заголовка экрана вы можете увидеть интервал обновления watch и выполненную команду ( Every 2.0s: date ), а в верхнем левом углу watch показывают текущее время и дату. Если вы хотите отключить заголовок, используйте параметр -t ( —no-title ).
Вывод указанной команды отображается на экране и регулярно обновляется каждые две секунды.
Чтобы выйти из команды watch , просто нажмите Ctrl+C Вы также можете настроить watch для выхода при изменении вывода команды, используя параметр -g ( —chgexit ).
В следующих разделах мы рассмотрим наиболее часто используемые параметры команды watch .
Как изменить временной интервал
Что делать, если интервал обновления по умолчанию в две секунды не подходит для вашего варианта использования?
Параметр -n ( —interval ), за которым следует желаемое количество секунд, позволяет вам изменить временной интервал между обновлениями:
Например, чтобы отслеживать использование дискового пространства с помощью команды df и обновлять экран каждые пять секунд, вы должны выполнить:
Подчеркивая разницу между обновлениями
Параметр -d ( —difference ) заставит watch выделять изменения между последовательными обновлениями.
Допустим, вы хотите контролировать время безотказной работы системы, выполнив команду uptime и выделив изменения. Команда будет такой:
Если вы хотите, чтобы блики были липкими, передайте =cumulative параметру -d . Это означает, что все значения, которые когда-либо изменялись, останутся выделенными.
Команды с конвейерами
Если вы хотите выполнить команду, содержащую каналы, вам необходимо заключить команду в одинарные или двойные кавычки. Если вы не заключите полную команду, watch запустит только первую команду, а затем передаст ее вывод следующей команде в конвейере.
Например, следующая команда будет отслеживать количество активных соединений на порту 80 используя комбинацию утилит netstat и grep :
Выводы
К настоящему времени вы должны хорошо понимать, как использовать команду Linux watch . Вы всегда можете просмотреть все доступные параметры команды watch , набрав в терминале man watch .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Есть ли лучший способ запустить команду N раз в bash?
Я иногда запускаю командную строку bash следующим образом:
для выполнения some_command несколько раз подряд — 10 раз в этом случае.
часто some_command — это действительно цепочка команд или конвейер.
есть ли более лаконичный способ сделать это?
19 ответов
еще один простой способ взломать:
выполнить Эхо 20 раз.
обратите внимание, что seq 20 | xargs -Iz echo «Hi there z» выводит:
Если вы используете оболочку zsh:
где 10-Количество повторов команды.
используя GNU Parallel вы можете сделать:
Если вы не хотите номер в качестве аргумента и только запустить одно задание за раз:
пройдите через учебник (http://www.gnu.org/software/parallel/parallel_tutorial.html). Командная строка с любовью к тебе за это.
другая форма вашего примера:
xargs и быстро:
на современном 64-битном Linux, дает:
это имеет смысл, так как xargs команда-это единственный собственный процесс, который порождает /usr/bin/true команда несколько раз, вместо for и while петли, которые все интерпретируются в Bash. Конечно, это работает только для одной команды; если вам нужно сделать несколько команд в каждой итерации цикла, он будет так же быстро, или, может быть, быстрее, чем передача sh -c ‘command1; command2; . ‘ в xargs
на -P1 также можно изменить, скажем, -P8 чтобы порождать 8 процессов параллельно, чтобы получить еще один большой импульс в скорости.
Я не знаю, почему GNU parallel так медленно. Я бы подумал, что это сравнимо с xargs.
простая функция в файле конфигурации bash (.bashrc для меня, на Mac) может работать хорошо.
Источник
Самые полезные приёмы работы в командной строке Linux
Каждый, кто пользуется командной строкой Linux, встречался со списками полезных советов. Каждый знает, что повседневные дела вполне можно выполнять эффективнее, да только вот одно лишь это знание, не подкреплённое практикой, никому не приносит пользы.
Как выглядят типичные трудовые будни системного администратора, который сидит на Linux? Если абстрагироваться от всего, кроме набираемых на клавиатуре команд, то окажется, что команды эти постоянно повторяются. Всё выходит на уровень автоматизма. И, если даже в работе есть что улучшать, привычка противится новому. Как результат, немало времени уходит на то, чтобы делать так, как привычнее, а не так, как быстрее, и, после небольшого периода привыкания – удобнее. Помнить об этом, сознательно вводить в собственную практику новые полезные мелочи – значит профессионально расти и развиваться, значит – экономить время, которое можно много на что потратить.
Вывод результатов работы команд в виде таблицы
Иногда вывод результатов работы команд выглядит как мешанина из беспорядочных строк. Найти то, что надо, в таких данных можно, но работать с ними неудобно. Например – что-то подобное можно получить в ответ на команду mount . Хорошо бы то же самое вывести в виде таблицы. И это не только возможно, но ещё и очень просто:
Результаты работы команды mount, оформленные в виде таблицы
По умолчанию команда формирует табличное представление, ориентируясь на пробелы между словами. А что, если в качестве разделителей используются другие символы, вроде двоеточий? Например – в выводе cat /etc/passwd ?
Упорядочить можно и такие данные – достаточно указать символ-разделитель с параметром –s . Например, ниже приведена команда для символа «:».
Отформатированный вывод /etc/passwd
Многократный повтор команды до её успешного завершения
Если вы погуглите на эту тему, то обнаружите, что многие задают вопрос о том, как повторять команду до тех пор, пока она не будет успешно выполнена. Например, такое может быть полезным при пинге сервера до тех пор, пока он не откликнется, при проверке выгрузки файлов, или при опросе некоего URL до тех пор, пока он не окажется доступен.
Решить подобную задачу поможет цикл while true . Выглядит всё это так:
Команда будет повторяться до её успешного завершения
В этом примере конструкция >/dev/null 2>&1 перенаправляет вывод программы в /dev/null , включая и Standard Error, и Standard Out.
Вероятнее всего, это – один из самых полезных приёмов работы с командной строкой Linux.
Сортировка процессов по используемой памяти
Отсортированный список процессов
Сортировка процессов по использованию ресурсов CPU
Сортировка процессов по использованию CPU делается так:
Отсортированный список процессов
Для того, чтобы вывести сведения об архитектуре, используйте команду getconf LONG_BIT .
Одновременный просмотр нескольких лог-файлов
Для просмотра лог-файлов вполне подходит команда tail , но иногда может понадобиться одновременная работа с несколькими подобными файлами. Для решения этой задачи подойдёт консольный инструмент multitail , который поддерживает выделение текста, фильтрацию и многие другие полезные возможности.
Работа с multitail
Установить эту утилиту, если вы её у себя не найдёте, можно командой apt-get install multitail .
Возврат к предыдущей директории
Для того, чтобы вернуться к предыдущей директории, просто наберите cd –.
Мониторинг с регулярными интервалами
Использование утилиты watch (например, watch df –h ) поможет организовать наблюдение за выводом любой команды. Например, можно наблюдать за объёмом свободного пространства, и за тем, как он меняется.
Пожалуй, вы сами сможете найти подходящие сценарии для использования этой команды.
Продолжение выполнения программы после окончания сессии
Когда вы запускаете любую программу в фоне и закрываете консоль, программа тоже завершит работу. А что, если надо, чтобы программа работала и после закрытия оболочки?
Для того, чтобы этого добиться, можно воспользоваться командой nohup , название которой расшифровывается как «no hang-up». Выглядит это так:
Пожалуй, эта команда – одна из тех, о которой забывают чаще всего, открывая по несколько окон терминала только ради исполняющихся в них команд.
Команда nohup
В примере, показанном на рисунке выше, в текущей директории будет создан файл nohup.out , содержащий вывод команды:
Файл nohup.out
Полезная штука, согласны?
Автоматический ответ yes или no
Предположим, вы хотите автоматизировать процесс, который требует от пользователя постоянно отвечать yes . Сделать это можно, используя команду yes :
Возможно, вместо этого вы решите автоматизировать отрицательные ответы. Тут поможет такая конструкция:
Автоматизация ответа YES
Создание файла заданного размера
Создавать файлы заданного размера можно, используя команду dd :
Вышеприведённая команда создаст файл размером 10 Мб, заполненный нулями.
Создание файла заданного размера
Выполнение последней команды с root-привилегиями
Иногда можно забыть ввести sudo перед командой, которой нужны root-привилегии. Вводить всё заново нет нужды – достаточно воспользоваться такой командой:
Выполнение последней команды с root-привилегиями
Создание протокола терминальной сессии
Для того, чтобы записать в файл всё, что было выведено в окне терминала, можно воспользоваться командой script .
После выхода из сессии протокол будет записан в файл typescript .
Замена пробелов на знаки табуляции
Вот команда, которая позволяет заменить пробелы на знаки табуляции:
На самом деле, она универсальна и умеет работать с любыми символами.
Замена строчных букв на прописные
А вот – пример вышеописанной команды для замены строчных букв в файле с текстом на прописные:
Замена строчных букв в файле на прописные
Автоматическое формирование списка аргументов для команд: xargs
Утилита xargs , пожалуй, достойна звания одной из самых полезных возможностей командной строки Linux. Её можно использовать для передачи вывода некоей команды в качестве аргумента для другой. Например, вот как можно выполнить поиск .png-файлов и сжать их, или сделать с ними что-нибудь ещё:
Или, возможно, у вас имеется файл со списком URL, и вы хотите загрузить ресурсы по этим адресам, или ещё как-то их обработать:
Тут надо учитывать, что вывод первой команды передаётся в качестве аргумента в конце команды xargs . Если при конструировании второй команды надо явно указать место, куда должны попасть выходные данные первой, достаточно воспользоваться парой фигурных скобок, <> и параметром –i для замены аргумента в нужном месте:
Команда xargs
Итоги
Полезности для командной строки Linux – тема невероятно обширная. Поэтому любой список, подобный нашему, можно пополнять очень и очень долго. Например, много неожиданного скрыто в командах awk и sed . Пожалуй, главное – чтобы такие вот списки шли в дело.
А какими интересными приёмами работы в командной строке пользуетесь вы?
Источник