linux не правильно работает python скрипт, если стартует как сервис. при ручном старте все ok
Народ help, уже всю голову сломал.
Вообщем стартует сервис который запускает file.sh из него стартует file.py - при таком варианте работает не привильно. Если запускаю просто изь консоли python3 file.py - все гуд. Что не так работает, ну например subprocess.getstatusoutput("rocm-smi -d") - это не сработает, если скрипт не запущен из консоли, нужно полностью указать адрес файла, но с некоторыми программами и командами не работает даже с полным адресом. Повторюсь, если запустить из консоли все работает, на серваке не работает.
Ответы (1 шт):
Это проблема с некорректной работой скрипта до боли мне знакома
Суть в том, что запускать python скрипт через root - это очень плохая идея (а по умолчанию он так и включается через сервисы)
В качестве решения Вам нужно добавить пользователя себе в сервисный конфиг
[Unit]
Description=%название%
After=network.target
[Service]
Type=simple
User = %ИМЯ ПОЛЬЗОВАТЕЛЯ%
Environment=PYTHONPATH=%ПУТЬ ДО ПАПКИ%
WorkingDirectory=%ПУТЬ ДО ПАПКИ%
ExecStart=/usr/bin/python3 %ПОЛНЫЙ ПУТЬ СКРИПТА%
Restart=always
RestartSec=5
[Install]
WantedBy=network.target
Так скрипт должен выполняться как сервис при этом поднимая себя, в случае, если он отключится