Рейтинг:1

рабочая команда в терминале не работает, если автоматически выполняется при запуске

флаг uy

Мне нужно выполнить программу Python при запуске Ubuntu. Скрипт работает либо из кода Visual Studio, либо из терминала командой:

bash -c "python3 /home/complete_path/script.py"

Тем не менее, если я ставлю тот же код с помощью «автозапуска приложений», код запускается, но выдает ошибку. Чтобы понять, что происходит, я испробовал множество других способов запуска файла, таких как изменение службы использования local.rc или crontab, но результат всегда один и тот же. Я также попытался автоматически запустить терминал и выполнить команду при запуске терминала, но результат не изменился. Какие различия есть в команде, запускаемой при запуске или автоматически терминалом по сравнению с
вставлять их вручную? Я не могу понять, что происходит.

Система представляет собой Jetson nano с установленной Ubuntu 18.04.

РЕДАКТИРОВАТЬ 1 запустив его как службу, кажется, что он не может импортировать модуль python

-- Запланирован автоматический перезапуск объекта mything.service, в результате
-- настроенный параметр Restart= для устройства.
gen 18 15:56:33 aisports-desktop systemd[1]: хватит мифов: занимайся своими делами.
-- Тема: Модуль mything.service завершил работу.
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Модуль mything.service завершил работу.
gen 18 15:56:33 aisports-desktop systemd[1]: Начал миф: занимайся своими делами.
-- Тема: Запуск модуля mything.service завершен.
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Модуль mything.service завершил запуск.
-- 
-- Результатом запуска является RESULT.
gen 18 15:56:33 aisports-desktop
gen 18 15:56:33 aisports-desktop мифинг.ш[7800]: файл «/home/aisports/Desktop/AISports/RGB_control_camera.py», строка 11, в <module>
gen 18 15:56:33 aisports-desktop
gen 18 15:56:33 aisports-desktop мифинг.ш [7800]: ModuleNotFoundError: нет модуля с именем 'depthai'
gen 18 15:56:33 aisports-desktop systemd[1]: mything.service: основной процесс завершен, код = завершен, статус = 1/FAILURE
gen 18 15:56:33 aisports-desktop systemd[1]: mything.service: Ошибка с результатом «код выхода».

пока я все еще не могу найти журнал crontab, так как команда

grep CRON /var/log/syslog

возвращает

Двоичный файл /var/log/syslog соответствует

РЕДАКТИРОВАТЬ 2 Я решил проблему с отсутствующим модулем, добавив путь к этому модулю в верхней части скрипта Python через

импорт системы
sys.path.append('path_to_module')

теперь возникает та же проблема, что и в случае запуска приложений:

gen 18 18:08:31 aisports-desktop systemd[1]: хватит мифов: занимайся своими делами.
-- Тема: Модуль mything.service завершил работу.
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Модуль mything.service завершил работу.
gen 18 18:08:31 aisports-desktop systemd[1]: Начал миф: занимайся своими делами.
-- Тема: Запуск модуля mything.service завершен.
-- Определено: systemd
-- Поддержка: http://www.ubuntu.com/support
-- 
-- Модуль mything.service завершил запуск.
-- 
-- Результатом запуска является RESULT.
gen 18, 18:08:32 aisports-desktop Размер определяется автоматически с первого
gen 18 18:08:34 aisports-desktop мифинг.ш[7763]: трассировка стека (последний вызов последний):
gen 18, 18:08:34, aisports-desktop
gen 18 18:08:34 aisports-desktop libopenblasp-r0-32ff4d91.3.13.so", по адресу 0x7fa055772b, в gotoblas_init
gen 18 18:08:34 aisports-desktop libopenblasp-r0-32ff4d91.3.13.so", по адресу 0x7fa06d4f54, в gotoblas_dynamic_
gen 18 18:08:34 aisports-desktop мифинг.ш[7763]: недопустимая инструкция (недопустимый код операции [0x7fa06d4f54])
gen 18 18:08:35 aisports-desktop пи
gen 18 18:08:35 aisports-desktop systemd[1]: mything.service: основной процесс завершен, код = завершен, статус = 132/н/д
gen 18 18:08:35 aisports-desktop systemd[1]: mything.service: Ошибка с результатом «код выхода».

РЕДАКТИРОВАТЬ 3 (последний) Я наконец решил проблему. в файле .bashrc я добавил экспорт OPENBLAS_CORETYPE=ARMV8 из-за типа процессора. Я думал, что этого было достаточно и для команд запуска, но этого не было. Добавление этой строки в сценарий запуска перед вызовом сценария python решило проблему. Спасибо @FelixJN за поддержку файлов журнала, которые мне очень помогли.

FelixJN avatar
флаг im
Сценарий опирается на какое-то окружение? Например. дисплей (запускается какой-то графический интерфейс?), сетевое подключение и т. д.? Что `systemd` или `cron` сообщали в журналах при сбое?
tode09 avatar
флаг uy
скрипт в основном получает видео с USB-камеры, сохраняет его в формате h265, выполняет преобразование в mp4, сжимая его через gstreamer и так далее. Нет графического интерфейса и дисплея. Единственное, что вызывается снаружи, это конвертация gstreamer через pexpect.
FelixJN avatar
флаг im
А `python3` где установлен? Может ли это быть просто проблемой `PATH`? Пожалуйста, добавьте сообщения об ошибках для ваших реализаций CRON и systemd.
tode09 avatar
флаг uy
Извините, но я не знаю, где найти эти журналы. Ошибка, которая появляется в файле syslog при запуске с автозапуском приложения, следующая: #2 Объект "/lib/ld-linux-aarch64.so.1", по адресу 0x7fad741a33, в #1 Объект "/usr/local/lib/python3.6/dist-packages/numpy/core/../../numpy.libs/libopenblasp-r0-32ff4d91.3.13.so", по адресу 0x7fa14da72b, в gotoblas_init #0 Объект "/usr/local/lib/python3.6/dist-packages/numpy/core/../../numpy.libs/libopenblasp-r0-32ff4d91.3.13.so", по адресу 0x7fa1657f54, в gotoblas_dynamic_init Недопустимая инструкция (недопустимый код операции [0x7fa1657f54]) Незаконная инструкция
FelixJN avatar
флаг im
Пожалуйста, не добавляйте это как комментарий - [отредактируйте] (https://askubuntu.com/posts/1387746/edit) свой вопрос и добавьте информацию (с правильным форматированием кода).Сообщения `CRON` можно найти в `syslog` (`grep CRON /var/log/syslog`), информация `systemd` через `journalctl -xeu ` (добавьте `--user`, если это пользовательский сервис).
tode09 avatar
флаг uy
хорошо, я сделаю это через несколько минут. Я обнаружил, что такая же проблема возникает и в том случае, если код запускается терминалом с помощью sudo. не знаю поможет ли
tode09 avatar
флаг uy
Я отредактировал вопрос, но до сих пор не понимаю, что происходит
waltinator avatar
флаг it
Это вопрос "контекста выполнения". Ваше терминальное выполнение скрипта запускается, когда вы (` echo "$USER"`) имеете преимущество в ваших файлах запуска, `PATH` и других переменных среды для Python. Процесс запуска системы запускается с правами root, не использует ваши файлы запуска, имеет собственный PATH и ни одну из ваших переменных среды. Запустите `echo "=== id ===";id;echo"=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias` в каждой из ваших сред.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.