AltairNsk 0 7 ноября, 2021 Опубликовано 7 ноября, 2021 · Жалоба Добрый день, свалилась на голову задачка: Есть OrangePi c Аrmbian'ом. Юзеркод на питоне: забирает кусками бинарный поток из usb-cdc, парсит данные, отправляет по wifi на kafka сервер, бинарник параллельно складывает в локальный файл. Реализация – модель акторов силами pykka библиотеки. Нужен автостарт и далее непрерывная работа в фоне. Задача осложняется тем, что и линукс, и питон я впервые вижу, третий день гляжу, как баран на новые ворота (и, возможно, не на те ворота). Как я понял: Cтартует python процесс, внутри несколько тредов с асинхронным обменом. При этом должны быть розданы права на доступ к оборудованию, сети, файловой системе. И вся балалайка должна быть запущена не ранее, чем оборудование/сеть/и т.д. поднимется... Сейчас: запуск через rc.local cd /root/scripts python3 /root/scripts/start_actors.py & exit 0 (ну да, всё незатейливо под рутом) (и заодно понял, зачем первая строчка – в скрипте файл создается относительно рабочей директории) Результат: автостарт – через раз, но если запустилось – работает, в смысле вижу данные на сервере. Если не запустилось и перезапустить руками rc.local systemctl restart rc.local То заводится и работает. Как я понял, в данном случае rc.local – это один из сервисов systemd. Для сервисов можно назначать зависимости (=>порядок запуска). Сервисы запускаются по возможности параллельно. В какую очередь дело доходит до rc.local, я не знаю. Иногда все готово для работы python скрипта, иногда нет. "Окей гугл: How To Autorun A Python Script On Boot Using systemd" "Да всё просто: пиши свой юнит" [Unit] Description=MyService Wants=network-online.target After=network-online.target multi-user.target [Service] Type=simple ExecStart=/usr/bin/var DEV=1 /usr/bin/python3 /root/scripts/start_actors.py WorkingDirectory=/root/scripts User=root StandardOutput=file:/root/scripts/script.log StandardError=file:/root/scripts/error.log [Install] WantedBy=multi-user.target Необходимые зависимости – один большой вопрос... Пока я вижу, что модуль стартует. Но данных нет. Нет доступа к USB или оно не готово? Какие сервисы за него отвечают? Назначение вывода – а так можно? Вроде бы да, питон-скрипт свой лог сюда кладет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BaN 0 7 ноября, 2021 Опубликовано 7 ноября, 2021 · Жалоба Вам нужно добавить udev правило, чтобы обрабатывать событие подключения и определения usb-cdc системой:https://unix.stackexchange.com/questions/436666/run-service-after-ttyusb0-becomes-available Удалите из вашего сервиса systemd WantedBy= и добавьте правило udev с SYSTEMD_WANTS вашего сервиса для usb-cdc по VID/PID, серийному номеру, появлению ttyUSB0 или как хотите еще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба On 11/7/2021 at 2:37 AM, AltairNsk said: Сейчас: запуск через rc.local cd /root/scripts python3 /root/scripts/start_actors.py & exit 0 Надежнее в таких скриптах указывать полный путь. не python3, а весь путь к нему. Я бы сделал ваше приложение в виде автомата с двумя состояниями: инициализация и работа. В начальном состоянии делать тест, что все поднялось и если нет, то поспать мунуту, а потом снова. Когда все поднялось, то перейти в состояние работа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sadmix 0 19 января, 2022 Опубликовано 19 января, 2022 · Жалоба On 11/7/2021 at 10:37 AM, AltairNsk said: Добрый день, свалилась на голову задачка: Есть OrangePi c Аrmbian'ом. Юзеркод на питоне Добрый день! Если не секрет - удалось ли решить задачку с автозапуском скрипта на питоне? Как в итоге сделали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 19 января, 2022 Опубликовано 19 января, 2022 · Жалоба Если не ошибаюсь, в Линукс есть утилита cron, с помощью которой можно запускать задачи периодически со всякими разными условиями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 34 19 января, 2022 Опубликовано 19 января, 2022 · Жалоба 5 hours ago, alexunder said: Если не ошибаюсь Не ошибаетесь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 31 января, 2022 Опубликовано 31 января, 2022 · Жалоба В скрипте, который заускается на линуксе, первой строчкой указывается чем этот скрипт обрабатывается. Надо указать питон вместе с путем к питону. В скрипте запуска надо будет указывать просто скрипт и путь к нему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться