loopner (короткое имя lpn) – это утилита командной строки для многократного выполнения любой команды с задержками, обработкой ошибок и красивой статистикой. Идеально подходит для нагрузочного тестирования, мониторинга, повторяющихся операций и обучения.
- 🔁 Повторение команды заданное количество раз
- ⏱️ Задержка между запусками (можно дробные секунды, например
0.5) - 🚦 Выбор поведения при ошибке: остановиться или продолжить (
-k) - 🤫 Тихий режим (
-q) – только вывод самой команды - 🗣️ Подробный режим (
-v) – время выполнения каждого запуска - 📊 Итоговая статистика: успешные/неудачные попытки, общее время
- 🧩 Поддержка любых команд и аргументов (включая свои опции через
--) - 🩺 Проверка существования команды до первого запуска
- 🛑 Корректная обработка Ctrl+C и SIGTERM
- 🔗 Два имени в системе:
loopnerи короткоеlpn
loopner [OPTIONS] [--] [args...] # вместо loopner возможно lpn
| Опция | Длинная версия | Описание |
|---|---|---|
-n N |
--count N |
Количество повторений (по умолчанию 1) |
-d SEC |
--delay SEC |
Задержка между запусками (по умолчанию 0) |
-k |
--keep-going |
Продолжать при ошибке (иначе останов) |
-q |
--quiet |
Только вывод команды, без служебных сообщений |
-v |
--verbose |
Детальный вывод (время, статус) |
-h |
--help |
Показать справку |
-- |
— | Разделитель: всё после – команда |
# Выполнить ls -la 5 раз
loopner -n 5 ls -la
# Короткое имя lpn, 3 пинга с задержкой 1 секунда
lpn -n 3 -d 1 -- ping -c 1 google.com
# Продолжать даже при ошибках (2 раза, завершится с кодом 2)
lpn -k -n 2 false
# Тихий режим – только вывод команд
loopner -q -n 100 -- curl -s https://api.ipify.org
# Подробный режим с временем выполнения
loopner -v -n 4 -- sleep 0.5| Код | Значение |
|---|---|
| 0 | Все запуски успешны |
| 1…254 | Количество неудачных запусков (если использован -k) |
| 127 | Команда не найдена |
| 130 | Прервано пользователем (Ctrl+C) |
| 143 | Завершено по SIGTERM |
- bash 4.0 или выше
- bc (для вычислений с плавающей точкой) – обычно предустановлен
- getopt (расширенная версия, входит в util-linux)
Проверьте наличие getopt и bc:
which getopt bcgit clone https://github.com/nesgen/loopner.git
cd loopner
chmod +x install.sh
sudo ./install.shgit clone https://github.com/nesgen/loopner.git
cd loopner
sudo make installsudo curl -L https://raw.githubusercontent.com/nesgen/loopner/main/loopner -o /usr/local/bin/loopner && \
sudo chmod +x /usr/local/bin/loopner && \
sudo ln -s /usr/local/bin/loopner /usr/local/bin/lpnsudo make uninstall # если установили через Makefile
# или вручную:
sudo rm /usr/local/bin/loopner /usr/local/bin/lpnПриветствуются любые замечания и запросы на изменение кода! Пожалуйста, сначала создайте заявку, чтобы обсудить любые существенные изменения.