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 с ошибкой