TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #244 1.45K
trap и ERR: превращаем скрипт в «черный ящик» для отладки

Когда скрипт падает - хочется понять где, почему и с каким кодом ошибки. Вместо угадываний можно сделать систему отлова ошибок и логирования через trap и ERR. Это способ автоматически выполнять команду при любой ошибке во время выполнения скрипта. Аналогично try/catch, только в стиле Bash.

▪️ Пример: лог ошибок в файл


#!/bin/bash
set -Eeu -o pipefail

LOGFILE="/tmp/script_errors.log"

# Функция, вызываемая при ошибке
error_handler() {
echo "[$(date)] Ошибка в строке $1. Код: $2" >> "$LOGFILE"
}
trap 'error_handler $LINENO $?' ERR


Теперь при любой ошибке будет лог:


[2025-04-29 12:45:03] Ошибка в строке 15. Код: 1


🌟 Что ещё можно логировать?

- PID скрипта: $$
- Имя текущей функции: ${FUNCNAME[0]}
- Последнюю выполненную команду: BASH_COMMAND
- Пользователя: $USER
- Текущий каталог: pwd


▪️ Например:


trap 'echo "[$(date)] Ошибка в $BASH_COMMAND (PID $$, строка $LINENO, пользователь $USER)" >> $LOGFILE' ERR


▪️ Сценарий с полным "черным ящиком"


#!/bin/bash
set -Eeuo pipefail
trap 'echo "[ERROR] [$LINENO] $BASH_COMMAND (exit $?)" >> /var/log/myscript_crash.log' ERR
trap 'echo "[INFO] Завершение скрипта: $?" >> /var/log/myscript.log' EXIT


BashTex 📱 #bash #utils
  • 👍 13
More from @bash_tex
  1. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  2. Oct 9, 2026BashTex 📱 #мем
  3. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  4. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  5. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  6. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →