Puncte:1

comanda de lucru din terminal nu funcționează dacă este executată automat la pornire

drapel uy

Trebuie să execut un program Python la pornirea Ubuntu. Scriptul funcționează fie rulat din codul de studio vizual, fie de la terminal cu comanda:

bash -c „python3 /home/complete_path/script.py”

Cu toate acestea, dacă pun același cod folosind „aplicațiile de pornire”, codul este rulat, dar dă înapoi o eroare. Pentru a înțelege ce se întâmplă, am încercat multe alte metode pentru a rula fișierul, cum ar fi modificarea serviciului de utilizare local.rc sau crontab, dar rezultatul este întotdeauna același. De asemenea, am încercat să lansez automat terminalul și să execut comanda la pornirea terminalului, dar rezultatul nu este schimbat. Ce fel de diferențe există într-o comandă rulată la pornire sau automat de către un terminal vs
le introduc manual? Nu pot să-mi dau seama ce se întâmplă.

Sistemul este un Jetson nano cu Ubuntu 18.04 instalat.

EDITARE 1 rulându-l ca serviciu, se pare că nu poate importa un modul Python

-- Repornirea automată a unității mything.service a fost programată, ca rezultat pentru
-- setarea configurată Restart= pentru unitate.
gen 18 15:56:33 aisports-desktop systemd[1]: Am oprit mitul: fă-mi treaba.
-- Subiect: Unitatea mything.service s-a încheiat
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Unitatea mything.service s-a încheiat.
gen 18 15:56:33 aisports-desktop systemd[1]: A început mitul: fă-mi treaba.
-- Subiect: Unitatea mything.service a terminat pornirea
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Unitatea mything.service a terminat de pornire.
-- 
-- Rezultatul la pornire este REZULTAT.
gen 18 15:56:33 aisports-desktop mything.sh[7800]: Traceback (cel mai recent apel ultimul):
gen 18 15:56:33 aisports-desktop mything.sh[7800]: fișierul „/home/aisports/Desktop/AISports/RGB_control_camera.py”, rândul 11, în <modul>
gen 18 15:56:33 aisports-desktop mything.sh[7800]: import depthai ca dai
gen 18 15:56:33 aisports-desktop mything.sh[7800]: ModuleNotFoundError: Niciun modul numit „depthai”
gen 18 15:56:33 aisports-desktop systemd[1]: mything.service: Proces principal ieșit, cod=ieșit, stare=1/Eșec
gen 18 15:56:33 aisports-desktop systemd[1]: mything.service: Eșuat cu rezultatul „cod de ieșire”.

în timp ce încă nu pot găsi jurnalul crontab, de la comanda

grep CRON /var/log/syslog

dă înapoi

Fișierul binar /var/log/syslog se potrivește

EDITARE 2 Am rezolvat problema modulului lipsă, adăugând calea acelui modul în partea de sus a scriptului Python

import sys
sys.path.append('path_to_module')

acum problema care apare este aceeași ca și în cazul aplicațiilor de pornire:

gen 18 18:08:31 aisports-desktop systemd[1]: Am oprit mitul: fă-mi treaba.
-- Subiect: Unitatea mything.service s-a încheiat
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Unitatea mything.service s-a încheiat.
gen 18 18:08:31 aisports-desktop systemd[1]: A început mitul: fă-mi treaba.
-- Subiect: Unitatea mything.service a terminat pornirea
-- Definit de: systemd
-- Asistență: http://www.ubuntu.com/support
-- 
-- Unitatea mything.service a terminat de pornire.
-- 
-- Rezultatul la pornire este REZULTAT.
gen 18 18:08:32 aisports-desktop mything.sh[7763]: [2022-01-18 18:08:32.050] [avertisment] VideoEncoder setDefaultProfilePreset: trecerea „lățime”/ „înălțime” este învechită. Mărimea este determinată automat de la prima
gen 18 18:08:34 aisports-desktop mything.sh[7763]: Urmărirea stivei (cel mai recent apel ultimul):
gen 18 18:08:34 aisports-desktop mything.sh[7763]: #2 Obiect „/lib/ld-linux-aarch64.so.1”, la 0x7fb4f57a33, în
gen 18 18:08:34 aisports-desktop mything.sh[7763]: #1 Obiect „/usr/local/lib/python3.6/dist-packages/numpy/core/../../numpy.libs/ libopenblasp-r0-32ff4d91.3.13.so", la 0x7fa055772b, în ​​gotoblas_init
gen 18 18:08:34 aisports-desktop mything.sh[7763]: #0 Object „/usr/local/lib/python3.6/dist-packages/numpy/core/../../numpy.libs/ libopenblasp-r0-32ff4d91.3.13.so", la 0x7fa06d4f54, în gotoblas_dynamic_
gen 18 18:08:34 aisports-desktop mything.sh[7763]: instrucțiuni ilegale (opcode ilegal [0x7fa06d4f54])
gen 18 18:08:35 aisports-desktop mything.sh[7763]: /usr/local/bin/mything.sh: line 2: 7779 Instrucțiuni ilegale (core dumping) python3 /home/aisports/Desktop/AISports/RGB_control_camera. py
gen 18 18:08:35 aisports-desktop systemd[1]: mything.service: Proces principal ieșit, cod=ieșit, stare=132/n/a
gen 18 18:08:35 aisports-desktop systemd[1]: mything.service: a eșuat cu rezultatul „cod de ieșire”.

EDITARE 3 (ultima) In sfarsit am rezolvat problema. în fișierul .bashrc pe care l-am adăugat exportați OPENBLAS_CORETYPE=ARMV8 din cauza tipului procesorului. Am crezut că a fost suficient și pentru comenzile de pornire, în schimb nu a fost. Adăugarea acelei linii la scriptul de pornire, înainte de a apela script-ul python a rezolvat problema. Vă mulțumesc @FelixJN pentru sprijinul acordat pentru a avea fișierele jurnal, care m-au ajutat foarte mult.

FelixJN avatar
drapel im
Se bazează scriptul pe un mediu oarecare? De exemplu. afișaj (pornește o GUI?), conexiune la rețea etc.? Ce a raportat `systemd` sau `cron` în jurnalele când a eșuat?
tode09 avatar
drapel uy
scriptul, practic, achiziționează un videoclip de la o cameră USB, salvează-l în h265, face o conversie în mp4 comprimându-l prin gstreamer și așa mai departe. Fără GUI și fără afișaj. Singurul lucru care se numește afară este conversia gstreamer prin peexpect.
FelixJN avatar
drapel im
Și `python3` este instalat unde? Ar putea fi aceasta doar o problemă de tip „CALEA”? Vă rugăm să adăugați mesajele de eroare pentru implementările dvs. `CRON` și `systemd`.
tode09 avatar
drapel uy
Îmi pare rău, dar nu știu unde să găsesc acele jurnale. Eroarea care apare în fișierul syslog atunci când este lansată cu aplicația de pornire este următoarea: #2 Obiect „/lib/ld-linux-aarch64.so.1”, la 0x7fad741a33, în #1 Obiect „/usr/local/lib/python3.6/dist-packages/numpy/core/../../numpy.libs/libopenblasp-r0-32ff4d91.3.13.so”, la 0x7fa14da72b, în ​​gotoblas_init #0 Obiect „/usr/local/lib/python3.6/dist-packages/numpy/core/../../numpy.libs/libopenblasp-r0-32ff4d91.3.13.so”, la 0x7fa1657f54, în gotoblas_dynamic_init Instrucțiuni ilegale (opcode ilegal [0x7fa1657f54]) Instruire ilegală
FelixJN avatar
drapel im
Vă rugăm să nu adăugați acest lucru ca comentariu - [edit](https://askubuntu.com/posts/1387746/edit) întrebarea dvs. și adăugați informațiile (cu formatarea corectă a codului).Mesajele `CRON` pot fi găsite în `syslog` (`grep CRON /var/log/syslog`), informații `systemd` prin `journalctl -xeu ` (adăugați `--user` dacă este un serviciu pentru utilizatori).
tode09 avatar
drapel uy
ok, o voi face in cateva minute. Am aflat că aceeași problemă apare și dacă codul este lansat de terminalul cu sudo. Nu stiu daca ajuta
tode09 avatar
drapel uy
Am editat întrebarea, dar încă nu am idee despre ce se întâmplă
waltinator avatar
drapel it
Este o chestiune de „context de execuție”. Execuția terminalului dvs. a scriptului rulează pe măsură ce dvs. (` echo "$USER"`) are avantajul fișierelor dvs. de pornire, `PATH` și alte variabile de mediu pentru Python. Procesul de pornire a sistemului rulează ca `rădăcină`, nu folosește fișierele dvs. de pornire, are propriul său `PATH` și nici una dintre variabilele dumneavoastră de mediu. Rulați `echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias` în fiecare dintre mediile dvs.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.