Puncte:1

Lucrarea Cron pare să funcționeze, dar nicio ieșire și a fost ucis după un timp

drapel fr
VII

Încerc să rulez scripturile mele python cu crontab. Am 2 scripturi Python în același director. Primul fișier1.py are doar 1 linie imprimare(1). Al doilea dosar fișier2.py începe cu imprimare(2) dar apoi un cod lung pentru a interoga și a actualiza datele din baza mea de date SQL.

Configurația mea în crontab -e este ceva de genul acesta (am configurat fișierele să ruleze în fiecare minut și să salvez rezultatul în cron.log

* * * * * cd /path/to/files && python3 file1.py >> /path/to/files/cron.log 2>&1
* * * * * cd /path/to/files && python3 file2.py >> /path/to/files/cron.log 2>&1

Când verific ieșirea cron.log, la început doar văd 1, care este din fișier1.py dar nu văd niciunul 2, ieșirea din fișier2.py. Totuși, după un timp, poate 10 minute sau cam așa ceva, văd Ucis în cron.log.

Cred că Ucis mesajul înseamnă că cron a început munca să ruleze fișier2.py și a ucis postul după un timp. Nu mă interesează motivul pentru care Cron îmi ucide slujba. Ceea ce sunt confuz este dacă cron a început munca să ruleze fișier2.py, de ce nu există 2 în cron.log. Tot ce văd este 1 și Ucis. Ambele fișiere rulează fără nicio problemă când le rulez manual. Apreciez orice ajutor

VII avatar
drapel fr
VII
scuze, am editat
Puncte:1
drapel hr

Bănuiesc că se datorează faptului că atunci când ieșirea este redirecționată, python3 își tamponează fluxul de ieșire standard - iar tamponul nu este golit când procesul este oprit.

Pentru a ilustra, dat

$ cat file2.py
timpul de import
imprimare(2)
timp.somn(5)

atunci

$ timeout 3 python3 file2.py
2

întrucât

$ timeout 3 python3 file2.py | pisică
Terminat

Dacă forțezi python3 pentru a debloca fluxurile sale, probabil că veți vedea rezultatul așteptat de jurnal:

$ timeout 3 python3 -u file2.py | pisică
2
Terminat
VII avatar
drapel fr
VII
mulțumesc pentru răspuns, da, trebuie să debloc ieșirea. Îmi pare rău, este prima dată când întreb în această comunitate, așa că nu vă pot vota încă răspunsul (nu este suficientă reputație).
mondotofu avatar
drapel cn
Ar avea sens să scrieți rezultatul în două fișiere cron.log separate pentru a atenua disputele?
drapel hr
@mondotofu asta e o întrebare bună - chiar nu știu

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.