Не могу заставить службу systemd запускать программу PythonLinux

Ответить Пред. темаСлед. тема
Anonymous
 Не могу заставить службу systemd запускать программу Python

Сообщение Anonymous »


Я пытаюсь запустить довольно простую программу Python при запуске и заставить ее перезапуститься самостоятельно.

Программа Python работает нормально с терминала. Служба просто выдает мне сообщение об ошибке.

sudo systemctl status logger_autostart.service logger_autostart.service — Регистрация силы сигнала Rockblock Iridium Загружено: загружено (/etc/systemd/system/logger_autostart.service; включено; предустановка поставщика: включено) Активно: сбой (Результат: код выхода) с четверга 07.12.2023, 07:55:57 CET; 1 секунду назад Процесс: 3340 ExecStart=/usr/bin/python3/home/pi/Downloads/signal_test.py (код=выход, статус=1/FAILURE) Основной PID: 3340 (код=выход, статус=1/ОТКАЗ) Процессор: 204 мс 7 декабря, 07:55:57 raspberrypi systemd[1]: logger_autostart.service: запланированное задание перезапуска, счетчик перезапуска равен 5. 7 декабря, 07:55:57 raspberrypi systemd [1]: прекращена регистрация силы сигнала Rockblock Iridium. 7 декабря, 07:55:57 raspberrypi systemd[1]: logger_autostart.service: Запрос на запуск повторяется слишком быстро. 7 декабря, 07:55:57 raspberrypi systemd[1]: logger_autostart.service: Ошибка с результатом «код выхода». 7 декабря, 07:55:57 raspberrypi systemd [1]: не удалось запустить регистрацию силы сигнала Rockblock Iridium. мой служебный файл:

[Единица измерения] Описание=Регистрация мощности сигнала каменной глыбы иридия After=multi-user.target [Услуга] Тип=простой Пользователь=пи ExecStart=/usr/bin/python3/home/pi/Downloads/signal_test.py Перезапустить=всегда StandardOutput=системный журнал Стандартная ошибка = системный журнал SyslogIdentifier=%n [Установить] WantedBy=multi-user.target Не могу увидеть журналы ошибок, если использую: journalctl -f -u echo-logger_autostart.service

Программа:

время импорта из даты и времени импорта даты и времени импортировать RPi.GPIO как GPIO время импорта импортный серийный номер из adafruit_rockblock импортировать RockBlock журнал импорта импортировать случайный импортировать ОС из потока импорта событий # Контакты GPIO для светодиодов led_pins = [17, #green (нет подключения) 27, #желтый (плохое соединение) 22, #красный (хорошая связь) 23] #blue (во время запуска / для ) # контакт GPIO для кнопки button_pin = 18 цикл_актив = Ложь защита Board_Setup(): # Установите режим GPIO и предупреждения GPIO.setmode(GPIO.BCM) GPIO.setwarnings(ложь) # Настройте контакты светодиода как выход для вывода вled_pins: GPIO.setup(контакт, GPIO.OUT) GPIO.выход(контакт, GPIO.LOW) # Вывод кнопки настройки как вход с подтягивающим резистором GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) def rockblock_setup() -> RockBlock: uart = серийный.Serial("/dev/ttyUSB0", 19200) вернуть RockBlock (uart) защита all_leds_off(): для вывода вled_pins: GPIO.выход(контакт, GPIO.LOW) защита red_led_on(): GPIO.output(led_pins[2], GPIO.HIGH) защита Yellow_led_on(): GPIO.output(led_pins[1], GPIO.HIGH) защита green_led_on(): GPIO.output(led_pins[0], GPIO.HIGH) защита toggle_blue_led(): состояние = GPIO.input(led_pins[3]) если состояние == GPIO.HIGH: GPIO.output(led_pins[3], GPIO.LOW) еще: GPIO.output(led_pins[3], GPIO.HIGH) защита button_pressed_callback (канал): глобальный цикл_активный циклический_активный = не циклический_активный защита create_log_file(): # Создать файл журнала, используя текущее время в формате Г-М-Д если нет os.path.exists("logs/"): os.madeirs("журналы/") current_datetime = datetime.now() timestamp = current_datetime.strftime("%Y-%m-%d") имя_файла_журнала = f"log_{метка времени}.txt" logging.basicConfig( уровень = logging.INFO, format="%(asctime)s %(сообщение)s", datefmt="%H:%M:%S", имя_файла = "logs/" + имя_файла_журнала ) защита run_logger(): # регистрируем уровень сигнала каждые 10 секунд глобальный цикл_активный create_log_file() рб = rockblock_setup() #ждём пока кнопка не будет нажата GPIO.add_event_detect(button_pin, GPIO.BOTH, обратный вызов=button_pressed_callback) print("используйте переключатель, чтобы начать регистрацию") пока не циклический_активный: проходить print("Запись началась") пока цикл_активен: качество = rb.signal_quality # случайное целое число, пока антенна исправлена # качество = random.randint(0,5) logging.info(качество) качество печати) если качество == 0: all_leds_off() red_led_on() качество elif
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Не могу заставить службу systemd запускать программу Python
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Запустите Python Selenium chromedriver как службу systemd
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Может ли служба systemd запускать код конкретной ветки?
    Гость » » в форуме Linux
    0 Ответы
    30 Просмотры
    Последнее сообщение Гость
  • Подождите с помощью systemd, пока сервисный сокет не станет доступным, а затем запустите зависимую службу
    Anonymous » » в форуме JAVA
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • Systemd пытается запустить мою службу через 5 минут, хотя это не удалось
    Anonymous » » в форуме Linux
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»