Puncte:0

Cum să rulați scriptul Python venv cu ecran în crontab

drapel jp

Am un script sh cu următorul conținut:

ecran -mdS myscript /home/myscript/myscript_env/bin/python3 /home/myscript/bot.py

Acest script execută un script python și îl deschide într-un nou ecran.

Funcționează bine când se execută fișierul sh în terminal, totuși când se folosește un crontab pentru a executa acest script sh la repornire, nu funcționează:

@reboot ./home/myscript/start.sh
drapel cn
Puteți să [editați](https://serverfault.com/posts/1081562/edit) întrebarea pentru a include toate `./home/myscript/start.sh`, vă rog
drapel cn
De asemenea, probabil că merită citit https://unix.stackexchange.com/questions/109804/crontabs-reboot-only-works-for-root
drapel jp
@hardillb Am postat deja conținutul scriptului de mai sus
Puncte:1
drapel cn

În primul rând, scripturile ar trebui să înceapă cu un shebang care să indice interpretul care îl va rula, mai ales când îl treceți la altceva decât un shell existent pentru al rula, deoarece nu știți ce mediu va fi folosit. Deci, scenariul în întregime ar trebui probabil să arate ca

#!/bin/sh
ecran -mdS myscript /home/myscript/myscript_env/bin/python3

În al doilea rând, așa cum am menționat în întrebarea la care am legat-o, @reboot nu este întotdeauna acceptat, fie pentru toți utilizatorii, fie deloc.

O opțiune mult mai bună pentru a începe ceva în momentul pornirii este un serviciu systemd (presupunând că nu utilizați ceva suficient de vechi pentru a utiliza în continuare scripturi init.d). O discuție rezonabilă despre cum să configurați un serviciu este Aici

Puncte:0
drapel us

Scriptul dvs. shell fie ar trebui să aibă #!/bin/bash sau #!/bin/sh în vârf. sau dacă se numește prin crontab, ar trebui să fie apelat fie cu /bin/sh sau /bin/bash your-script. O soluție alternativă în comparație cu crontab este să profitați de avantajele „/etc/rc.d/rc.local” fişier.

sh screen -mdS myscript /home/myscript/myscript_env/bin/python3

trebuie doar să vă asigurați că fișierul rc.local în sine este executabil:

chmod +x /etc/rc.d/rc.local
Puncte:0
drapel cn

Aveți vreo ieșire în e-mailul generat de cron? Încercați să verificați jurnalele cron sau e-mail pentru utilizatorul al cărui crontab conține această intrare și asta ar trebui să ofere un indiciu despre problemă.

La o privire, mi se pare că motivul este probabil în plus . în comandă. Încercați să vă schimbați

@reboot ./home/myscript/start.sh

la

@reboot /home/myscript/start.sh

si vezi daca te ajuta.

Din câte știu, cronjob rulează comenzi din directorul principal al utilizatorului (de ex., /rădăcină) în loc de rădăcina sistemului de fișiere (adică, /).

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.