Этот документ подробно объясняет функцию логирования `log()`, используемую в bash скриптах для ведения журнала работы скрипта.
Определение функции `log()`
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
Функция `log()` предназначена для записи отчетов о событиях, происходящих во время работы скрипта, в текстовый файл, называемый файлом журнала (логи).
Разбор строки функции построчно
Рассмотрим строку функции построчно:
- `log() { ... }`: Это определение функции с именем `log`. Все, что находится внутри фигурных скобок `{ ... }`, является телом функции.
- `echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"`: Это основная часть, которая генерирует строку для записи в лог.
- `echo`: Команда `echo` выводит текст на стандартный вывод.
- `$(date '+%Y-%m-%d %H:%M:%S')`: Это подстановка команды. Команда `date` вызывается и ее вывод подставляется в строку. `'+%Y-%m-%d %H:%M:%S'` - это форматный аргумент для команды `date`, указывающий, как должна выглядеть дата и время.
- `%Y`: Год (четыре цифры)
- `%m`: Месяц (две цифры)
- `%d`: День (две цифры)
- `%H`: Час (24-часовой формат)
- `%M`: Минута
- `%S`: Секунда
- `-`: Простой разделитель между датой/временем и сообщением.
- `$1`: Это первый аргумент, переданный функции `log()`. Когда вы вызываете `log("Сообщение")`, `$1` будет содержать строку "Сообщение".
- `>> "$LOG_FILE"`: Это перенаправление вывода команды `echo` в файл.
- `>>`: Оператор перенаправления вывода, который добавляет вывод команды в конец существующего файла. Если файл не существует, он будет создан.
- `"$LOG_FILE"`: Это переменная окружения, содержащая путь к файлу журнала.
Пример использования
LOG_FILE="/var/log/delete_files.log"
log "Скрипт запущен"
delete_some_files
log "Скрипт завершен успешно"
Результат в файле `/var/log/delete_files.log`:
2023-10-27 10:30:45 - Скрипт запущен
2023-10-27 10:30:45 - Скрипт завершен успешно
Ключевые моменты
- Удобство: Функция `log()` упрощает запись сообщений в лог.
- Консистентность: Форматирование даты и времени всегда одинаково.
- Передаваемые данные: Вы можете передавать любые сообщения в функцию `log()`.
- Файл журнала: Логи хранятся в файле, который можно просматривать и анализировать.
Почему это полезно для скрипта удаления файлов?
- Отслеживание: Можно увидеть, какие файлы были удалены, когда и почему.
- Диагностика: Если скрипт падает или работает неправильно, логи помогут понять, что пошло не так.
- Аудит: Логи могут служить для аудита действий, выполненных скриптом.
- Устранение неполадок: Если удаление файлов приводит к неожиданным последствиям, логи могут помочь проследить путь и найти причину.
Таким образом, функция `log()` является важным инструментом для обеспечения надежности, удобства и отслеживаемости работы скрипта удаления файлов.