Puncte:1

Joburile mele cron nu rulează când încerc să salvez rezultatul scriptului într-un fișier txt

drapel ng

Încerc să ruleze un script Python de două ori pe zi - o dată la 8:00 AM și din nou la 8:00 PM. Speranța mea era să stochez rezultatul scriptului într-un fișier txt de pe computerul meu numit LOG_{date-time}.txt, astfel încât să mă pot uita la fișierele „jurnal” în cazul în care ceva nu mergea bine cu scriptul. Am configurat următorul job cron:

0 8,20 * * * python3 /script/working/directory/Script.py > /script/working/directory/logs/LOG_"$(data +"%d-%m-%Y")".txt

După ce am configurat lucrarea cron, am verificat scriptul după ora 20:00 și am observat că scriptul meu nu a rulat încă (l-am setat să actualizeze un fișier de foaie de calcul și să lase o ștampilă de timp după fiecare actualizare).

Am făcut un pic de depanare pe cont propriu și am constatat că, dacă aș rula jobul cron fără porțiunea de ieșire a acestuia, ar funcționa (am constatat, de asemenea, că jurnalele jobului cron sunt afișate în UTC în loc de ora mea de sistem, dar asta este o problemă pentru altă dată):

0 8,20 * * * python3 /script/working/directory/Script.py

Este ceva ce îmi lipsește aici? Nu ar trebui să stocheze scripturile de ieșire într-un fișier? Sunt puțin nou în ceea ce privește lucrurile de aici și am încercat să învăț pe măsură ce merg cu asta, dar nu sunt sigur unde să merg cu asta.Ar fi frumos să pot stoca rezultatul scriptului meu în scopuri de depanare.

Wayne Vosberg avatar
drapel bd
încercați să eliminați ghilimele suplimentare. adică `/LOG_$(data+'%d-%m-%Y').txt`. De asemenea, vrei să spui `>>` în loc de `>`?
Wayne Vosberg avatar
drapel bd
Un alt gând - asigurați-vă că utilizatorul care execută jobul cron are acces la `/script/working/directory/logs`
drapel hr
Caracterele `%` sunt speciale în crontabs și trebuie să fie escape. Vedeți, de exemplu, [Nu se poate executa comanda în cron](https://askubuntu.com/questions/829818/unable-to-execute-command-in-cron)
Pocketmouse avatar
drapel ng
L-am format ușor greșit, ar trebui să fie `/"LOG_$(data +'%d-%m-%Y').txt"`
Puncte:1
drapel cn

Principalul motiv pe care îl pot presupune este că calea jurnalului nu există sau nu aveți permisiunea de a scrie în calea jurnalului.

Încercați să executați comanda manual în loc de cron

python3 /script/working/directory/Script.py > /script/working/directory/logs/LOG_"$(data +"%d-%m-%Y")".txt

Cel mai probabil veți vedea eroarea în terminalul dvs.

Pocketmouse avatar
drapel ng
Nu este cazul.
Pocketmouse avatar
drapel ng
Am intrat să editez și mi-am dat seama că nu salvasem acum, nu pot edita: Nu este cazul. Când rulez manual scriptul atât în ​​linia de comandă, cât și printr-un fișier .sh, funcționează fără probleme.De asemenea, am configurat atât `Script.py`, cât și `Script.sh` pentru a avea permisiuni executabile cu `chmod +x script.py`. M-am uitat mai departe și am descoperit că, dacă folosesc lucruri precum cererile `get`, trebuie să am un mediu virtual care trebuie invocat în cron pentru ca acest script să ruleze. Nu sunt sigur ce înseamnă asta sau cum să implementez acest lucru în prezent, dar, așa cum am spus, citesc în ea.

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.