Sziasztok !
A crontab, boot alkalmával indit egy teszt_futtato.sh bash scriptet, ami egy python fájlt indít. A teszt.py kiirja, hogy fut és enterre vár, tehát mindaddig fut amíg entert nem nyomunk. A raspberry pi rasbian alatt a cron működik, de a python ( print ) kimenete nem látszik.
pi@raspberrypi:~ $ ps -ef | grep crond
pi 6554 5866 0 02:04 pts/0 00:00:00 grep --color=auto crond
Hibaüzenet sehol nincs és a kimenet nem látszik sehol, bármilyen opcióval is indítom a pit. Sem cli sem desktop gui alatt nincs kimenet.
crontab -l > https://pastebin.com/6Wt2mnZR
teszt_futtato.sh : https://pastebin.com/Wwn2kBkP
teszt.py : https://pastebin.com/PTAqLwKN
Mi a baj, mit csinálok rosszul, vagy mit nem csinálok meg amiért nem látszik a kimenet ?
[ Megoldva ] |
A megoldások:
1- A háttérben futó alkalmazástól nem várok interaktivitást, helyette alkalmazás loggolás megy. ( crontab megértése )
2- A teszt_futtato.sh hibáinak javítása után megy minden.
3- Újra gondolt munkamenet javított a helyzeten.
Hozzászólások
A htop- ban nem látszik, hogy a teszt.py futna. Miért nem töltődik be ?
üdv: virtualm
crontab-os futásnál ne óhajts user-interakciót...
Most nem egészen értem: a crontab -l kimenetet adod, ami az aktuális felhasználóhoz tartozik - akkor miért kell a sudo -u pi?
Meg szerintem egyszerűbb lenne, ha a /etc/crontab-ba (vagy cron.d-be) raknád, és a pi felhasználó nevében futtatnád (nem kell sudo).
Szerintem a crontab bejegyzésben nem kell a "sudo -u pi".
Edit: Látom megelőztek... :)
Rendben, köszönöm az infókat.
üdv: virtualm
Én azt sem látom, hogy mi szükség van a wrapper shell scriptre? Illetve teszt nélkül azt mondanám, hogy a cron nem fog ttyt allokálni, az az input() fejre fog állni a pythonban. Meg egyébként sem értem, hogy ennek az egésznek mi értelme? Mire akarsz várni cronban?
Az csak a teszt miatt került oda, mert nem láttam a htop- ban, hogy fut e. A teszt az teszt, informál a körülményekről. Szoktam monitorra küldeni információkat, mert az gyorsan realizálható és szoktam log fájlt irni, de az macerásabb, lassabb és az SDcard nem szereti annyira mint a monitor. Igen amikor az ember nem ismer, nem ért valamit akkor irkál, hol ide, hol oda.
üdv: virtualm
Azért talán mégis jobb lenne egy logfájl. Hints: https://www.linuxquestions.org/questions/programming-9/frequently-repea…
Ige, hasonlót műveltem, hogy lássam a hibákat, de nem volt hiba. Ezért bátorkidtam ide feldobni a problémám.
üdv: virtualm
Az nagyon jó, hogy nem volt hiba, ettől függetlenül kellene keletkezzen egy logfájl a /tmp-ben.
a /tmp mappa üres
üdv: virtualm
Nyugi, nem kötözködni akartam, csak innen nem látszik, hogy mi az, amivel már csak próbálkoztál, és mi az, amit el akarsz igazából érni. Innen egész úgy tűnt, mintha ez egy megoldás skeletonja lenne, és nem állt össze.
Ez esetben egyrészt egyszerűsítsd az egészet, lehet hívni a python direktben.
Másrészt a cron a kimenetet mailben küldi, ha nem konfoltad, akkor jó eséllyel a root user lokális, sose olvasott leveles ládájában senyved.
Harmadrészt ilyenkor a legjobb egy fileba írni, erre a pythonban nem kell nagyon erőlködni, kb egy jól irányzott (kopipaszte a logging tutorial tetejéről):
... mert negyedrészt meg jó eséllyel tényleg az a baj, hogy az input() rendes shell hiányában egyébként behalt (és ennek akkor nyoma lesz levélben).
Illetve a cron is logol, azt is érdemes lenne nézni.
Köszönöm a javaslatokat, megnézem, kipróbálom Őket.
üdv: virtualm
a cron az outputot mail-ben küldi.
/etc/rsyslog.conf-ban törold ki a #-et a "cron.* /var/log/cron.log" sor elől és kapsz némi infót (aztán rsyslog restart)
Köszönöm, ezt is átnézem, kipróbálom.
üdv: virtualm