Эффективная работа с логами и отладкой ошибок в Bash

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

bashtraptee

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

📝 Пример перехвата ошибок и записи вывода:

#!/bin/bash

logfile="script.log"

# Установим trap для перехвата ошибок
trap 'echo "Ошибка на строке $LINENO" | tee -a $logfile' ERR

# Функция для демонстрации ошибки
demo_function() {
  echo "Start processing"
  # Здесь будет ошибка
  undefined_command
  echo "End processing"
}

# Запуск функции и запись логов
echo "Запуск скрипта..." | tee -a $logfile
demo_function
echo "Скрипт завершён" | tee -a $logfile

📌 Как это работает:

  • trap ловит все ошибки (код возврата ненулевой) и выводит сообщение о месте возникновения ошибки в лог
  • tee позволяет одновременно выводить сообщения в терминал и записывать их в файл, что помогает не пропустить важную информацию
  • Запуск функции demo_function вызывает ошибку, которая перехватывается и логируется в файл

❗️ Этот метод полезен для сложных сценариев, где важно контролировать выполнение скриптов и логировать ошибки в реальном времени, например, при автоматизации процессов, CI/CD или администрировании серверов.

tags: #bash #логирование

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот окна с кодом Bash: пример использования trap и tee для перехвата ошибок и записи логов; видна демо-функция и бренд RECURA.
Скриншот примера скрипта, показывающий использование trap и tee для логирования ошибок.

Читайте так же