Как добавить номера строк в отладку Bash
Настраиваем трассировку Bash через set -xve и переменную PS4, чтобы видеть файл, номер строки и имя функции. Добавляем цвет к отладочному выводу и быстрее находим место падения большого скрипта.
Фото: Luis Gomes / Pexels
← Все темы
Скрипты и практические примеры на Bash: автоматизация, администрирование Linux и DevOps-подходы к работе с инфраструктурой.
Настраиваем трассировку Bash через set -xve и переменную PS4, чтобы видеть файл, номер строки и имя функции. Добавляем цвет к отладочному выводу и быстрее находим место падения большого скрипта.
Восстанавливаем Bash-скрипт, который удалили с диска, пока процесс продолжает работать. Через lsof находим PID и файловый дескриптор, а затем читаем исходник из /proc/PID/fd.
Bash-скрипт фотографирует человека при попытке аутентификации Linux через PAM и отправляет снимок в Telegram. В примере используются ffmpeg, curl, pam_exec и настройка optional или required.
Практический справочник по специальным параметрам Bash: позиционные аргументы, PID, код возврата, IFS, имя скрипта и последний фоновый процесс. Каждый параметр разобран на коротком воспроизводимом примере.
Проверяем целостность архивов tar.gz без распаковки командами tar и gzip, намеренно повреждаем файл через truncate и разбираем коды возврата. В конце — готовый Bash-скрипт для автоматической проверки резервных копий.
Защищаем долгий Bash-скрипт от параллельных запусков из cron с помощью flock и lock-файла. Готовый обработчик блокирует повторную копию процесса и освобождает блокировку после завершения работы.
Настраиваем Bash Readline так, чтобы кавычки, круглые, квадратные и фигурные скобки автоматически закрывались прямо в терминале. Разбираем bind, inputrc, режим emacs и возможные конфликты горячих клавиш.
Создаём собственную метрику Prometheus обычным Bash-скриптом через textfile collector в node_exporter. Разбираем формат .prom, периодический запуск из cron и пример передачи квоты внешнего сервиса.
Разбираем тест -newerXY утилиты find и временные метки файлов. Ищем изменения относительно заданной даты или файла-образца, создаём контрольную метку через touch и выводим время найденных объектов.
Разбираем Linux-команду yes для автоматической передачи подтверждений в интерактивные программы. Показываем работу через пайп, произвольные ответы и отправку пустой строки для имитации Enter в скриптах и пайплайнах.
Работаем со временем в Bash через SECONDS, EPOCHSECONDS, EPOCHREALTIME и встроенный printf. Сравниваем с date, форматируем Unix-время и временно меняем часовой пояс через TZ.
Несколько способов завершить интерактивную оболочку Linux: CTRL+D, TMOUT, set -t, set -e, exec и exit. Отдельно разбираем настройку символа EOF через stty.
Bash — раздел BashDays, посвященный Bash, Shell scripting и работе в терминале Linux.
В разделе публикуются материалы по:
Здесь собраны практические примеры скриптов, приемов работы в терминале и способов автоматизации повседневных задач администратора.