📦 Набор скриптов для логирования с последовательного порта
Данные скрипты предназначены для систем на базе systemd (например, Ubuntu, RepkaOS). Они автоматически собирают логи с устройств по последовательному порту и выполняют:
- 📡 Автоподключение к устройству при появлении
- 🧹 Очистку старых логов (по умолчанию: старше 30 дней)
- 💾 Копирование логов на USB-флешку с меткой
USBLOGS
⚠️ Убедитесь, что пользователь входит в группу
dialout
, иначе не будет доступа к порту.
🚀 Использование
- Подключите устройство к последовательному порту (ttyUSB*/ttyACM*)
- Логирование начнётся автоматически (если настроена новая версия)
- Вставьте USB-флешку с меткой
USBLOGS
для сбора логов - Дождитесь окончания копирования (около минуты) и извлеките флешку
🔀 Разница между старой и новой версиями
Характеристика | Старая версия | Новая версия |
---|---|---|
Запуск | systemd unit на конкретный порт | udev + systemd user unit |
Масштабируемость | Один порт | Поддержка любых ttyUSB*/ttyACM* |
Совместимость | Только вручную | Автоматически |
❗ Старую и новую версии нельзя использовать одновременно. При переходе на новую — отключите старую службу.
⚙️ Развертывание (новая версия)
📦 Зависимости
🔧 Подготовка скриптов
Сделайте скрипты исполняемыми:
chmod +x serial_logger_v2.sh cleanup-logs.sh copy_logs_to_usb.sh
Проверьте и при необходимости отредактируйте:
serial_logger_v2.sh
— переменнаяBAUDRATE
copy_logs_to_usb.sh
— переменнаяUSER_HOME
serial-logger-v2@.service
—ExecStart
с абсолютным путём, от пользователяdmitrij999
cleanup-logs.service
—ExecStart
с абсолютным путём, от пользователяdmitrij999
98-serial-logging.rules
— заменить пользователяdmitrij999
на своего99-copy-logs.rules
— заменить путь на абсолютный кcopy_logs_to_usb.sh
Проверка вручную:
bash /home/dmitrij999/serial_logger/serial_logger_v2.sh /dev/ttyACM0
🛠️ Установка systemd user-сервисов
Разрешите запуск
systemd --user
без входа в систему:sudo loginctl enable-linger dmitrij999
Установите юниты:
cp serial-logger-v2@.service ~/.config/systemd/user/ sudo cp cleanup-logs.service /etc/systemd/system/ sudo cp cleanup-logs.timer /etc/systemd/system/
Активируйте очистку логов:
sudo systemctl daemon-reload sudo systemctl enable --now cleanup-logs.timer
serial-logger-v2@.service
запускается через udev, вручную активировать не требуется.
Установите udev-правила:
sudo cp 98-serial-logging.rules /etc/udev/rules.d/ sudo cp 99-copy-logs.rules /etc/udev/rules.d/ sudo udevadm control --reload sudo udevadm trigger
🧭 Развертывание (старая версия)
📦 Зависимости
- bash
- stty
🔧 Подготовка скриптов
Сделайте скрипты исполняемыми:
chmod +x serial_logger.sh cleanup-logs.sh copy_logs_to_usb.sh
Отредактируйте:
serial_logger.sh
: переменныеDEVICE
,BAUDRATE
copy_logs_to_usb.sh
: переменнаяUSER_HOME
serial-logger.service
:User
,ExecStart
cleanup-logs.service
:User
,ExecStart
99-copy-logs.rules
: абсолютный путь кcopy_logs_to_usb.sh
Проверка вручную:
bash ./serial_logger.sh
🛠️ Установка systemd и udev
Установите службы:
sudo cp serial-logger.service /etc/systemd/system/ sudo cp cleanup-logs.service /etc/systemd/system/ sudo cp cleanup-logs.timer /etc/systemd/system/
Активируйте:
sudo systemctl daemon-reload sudo systemctl enable --now serial-logger.service sudo systemctl enable --now cleanup-logs.timer
Udev:
sudo cp 99-copy-logs.rules /etc/udev/rules.d/ sudo udevadm control --reload sudo udevadm trigger
🧩 Настройки
💽 Изменение имени USB-флешки
- В
copy_logs_to_usb.sh
: переменнаяFLASH_LABEL_TO_COPY
- В
99-copy-logs.rules
:ENV{ID_FS_LABEL}=="USBLOGS"
🕓 Изменение времени хранения логов
- В
cleanup-logs.sh
: параметр-mtime +30
можно заменить на нужное значение
⚠️ Увеличение срока хранения = большее потребление памяти. Используйте ёмкие накопители.
🗂️ Пример структуры логов
/home/dmitrij999/logs/
├── ttyUSB0/
│ └── 22-06-2025.log
├── ttyACM0/
│ └── 22-06-2025.log
🧊 Оптимизация под RepkaPi
По умолчанию в RepkaOS включено графическое окружение. Для оптимизации:
sudo systemctl set-default multi-user.target
Это отключит GUI и снизит нагрузку на CPU/память.
Если при отображении README.md
в Markdown видите \_
вместо _
, просто удалите обратные слэши.
Описание
Набор скриптов на одноплатный компьютер для логгинга последовательного порта