README.md

📦 Набор скриптов для логирования с последовательного порта

Данные скрипты предназначены для систем на базе systemd (например, Ubuntu, RepkaOS). Они автоматически собирают логи с устройств по последовательному порту и выполняют:

  • 📡 Автоподключение к устройству при появлении
  • 🧹 Очистку старых логов (по умолчанию: старше 30 дней)
  • 💾 Копирование логов на USB-флешку с меткой USBLOGS

⚠️ Убедитесь, что пользователь входит в группу dialout, иначе не будет доступа к порту.


🚀 Использование

  1. Подключите устройство к последовательному порту (ttyUSB*/ttyACM*)
  2. Логирование начнётся автоматически (если настроена новая версия)
  3. Вставьте USB-флешку с меткой USBLOGS для сбора логов
  4. Дождитесь окончания копирования (около минуты) и извлеките флешку

🔀 Разница между старой и новой версиями

Характеристика Старая версия Новая версия
Запуск systemd unit на конкретный порт udev + systemd user unit
Масштабируемость Один порт Поддержка любых ttyUSB*/ttyACM*
Совместимость Только вручную Автоматически

Старую и новую версии нельзя использовать одновременно. При переходе на новую — отключите старую службу.


⚙️ Развертывание (новая версия)

📦 Зависимости

🔧 Подготовка скриптов

  1. Сделайте скрипты исполняемыми:

    chmod +x serial_logger_v2.sh cleanup-logs.sh copy_logs_to_usb.sh
    
  2. Проверьте и при необходимости отредактируйте:

    • serial_logger_v2.sh — переменная BAUDRATE
    • copy_logs_to_usb.sh — переменная USER_HOME
    • serial-logger-v2@.serviceExecStart с абсолютным путём, от пользователя dmitrij999
    • cleanup-logs.serviceExecStart с абсолютным путём, от пользователя dmitrij999
    • 98-serial-logging.rules — заменить пользователя dmitrij999 на своего
    • 99-copy-logs.rules — заменить путь на абсолютный к copy_logs_to_usb.sh
  3. Проверка вручную:

    bash /home/dmitrij999/serial_logger/serial_logger_v2.sh /dev/ttyACM0
    

🛠️ Установка systemd user-сервисов

  1. Разрешите запуск systemd --user без входа в систему:

    sudo loginctl enable-linger dmitrij999
    
  2. Установите юниты:

    cp serial-logger-v2@.service ~/.config/systemd/user/
    sudo cp cleanup-logs.service /etc/systemd/system/
    sudo cp cleanup-logs.timer /etc/systemd/system/
    
  3. Активируйте очистку логов:

    sudo systemctl daemon-reload
    sudo systemctl enable --now cleanup-logs.timer
    

serial-logger-v2@.service запускается через udev, вручную активировать не требуется.

  1. Установите 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

🔧 Подготовка скриптов

  1. Сделайте скрипты исполняемыми:

    chmod +x serial_logger.sh cleanup-logs.sh copy_logs_to_usb.sh
    
  2. Отредактируйте:

    • 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
  3. Проверка вручную:

    bash ./serial_logger.sh
    

🛠️ Установка systemd и udev

  1. Установите службы:

    sudo cp serial-logger.service /etc/systemd/system/
    sudo cp cleanup-logs.service /etc/systemd/system/
    sudo cp cleanup-logs.timer /etc/systemd/system/
    
  2. Активируйте:

    sudo systemctl daemon-reload
    sudo systemctl enable --now serial-logger.service
    sudo systemctl enable --now cleanup-logs.timer
    
  3. 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 видите \_ вместо _, просто удалите обратные слэши.

Описание

Набор скриптов на одноплатный компьютер для логгинга последовательного порта

Конвейеры
0 успешных
0 с ошибкой