Есть скрипт, работающий с COM-портом. Добавил его в автозагрузку путем создания файла с командой запуска в /etc/init.d/ После перезагрузки top видит питоновский процесс, но сам скрипт на взаимодействие с портом никак не реагирует. Стоит запустить скрипт вручную, как все нормально работает. В чем может быть причина?
1. а это именно ваш скрипт? Скрипт только в /etc/init.d/? тогда ещё команда требуется update-rc.d имяскрипта defaults 80 чтобы создались симлинки в /etc/rc?.d
2. при ручной проверке вы стартуете скрипт от имени root? если нет — может окружение не настроено, попробуйте sudo -H -u ИмяюзераИзподКоторого работает
3. посмотрите — какие есть ошибки от этого скрипта.
Прошу прощения. Лог заполнился, но не сразу.И судя по логу программа работает на ура, но вот почему-то внешне это никак не проявляется. Видимо по какой-то причине вот эта строчка обрабатываться не хочет os.popen('xrandr -o left'), что само по себе странно, ведь при запуске вручную она работает.
Ошибок никаких нет. Скрипт служит для поворота изображения при замыкании двух контактов на COM-порту. При запуске скрипта вручную от пользователя, через sudo, от рута все работает без нареканий. А вот при автозапуске судя по /tmp/pyscript.log программа работает исправно, но изображение не поворачивается.
Вам в лог надо отписывать не только вывод print, но и ошибки.Для этого строка запуска должна быть такая /usr/bin/python /path/to/script.py >>/tmp/pyscript.log 2>&1
Проблема скорее всего действительно в запуске xrandr. Эта утилита требует запущенных иксов и установленной переменной окружения DISPLAY. Попробуйте запускать как: DISPLAY=:0.0 xrandr -o left
Хотя возможно, что скрипт запускает xrandr еще до запуска самих иксов.
Как вариант, можно засунуть скрипт в автозагрузку(уже после старта иксов) gdm, менеджера окон или .xinitrc