Forum >> Programmazione Python >> Scripting >> [RISOLTO]Problema con script linux

Pagina: 1 2 Avanti

Salve a tutti,

Ho fatto un piccolo programmino in python per estrarre dati da un database.

Quando lo lancio da riga di comando, va tutto bene, quando invece lo lancio da cron non completa il lavoro.
Quando guardo il file di log, mi dice questo:

localhost.localdomain python12544: detected unhandled Python exception in '/home/sysop/seiscomp3/bin/scexevent.py'

Ho cercato di capire dove potesse essere il problema, ma non ci sono riuscito.

Scusate, ma sono nuovo del gruppo.

Ho provato ad allegare il programmino


--- Ultima modifica di sergio59 in data 2016-04-06 17:07:10 ---
Allegati
Ciao, non dai molte informazioni sulla piattaforma che utilizzi, ma proviamo a fare un po' di tentativi.

1. Hai lavorato con una virtualenv?
2. Usi il percorso relativo nel crontab?
3. Non ci sono i corretti permessi di esecuzione o di proprietà del file?

Ho visto che dentro il file hai specificato correttamente l'hashbang #!/usr/bin/python che è giusta, a meno di qualche personalizzazione e quindi visto che ci sei controlla anche quello.

Cya
Ciao Daniele,
grazie della risposta.

1) No, non ho lavorato con virtualenv.
2) Si, percorso relativo
3) Tutti i permessi. Il crontab su cui gira è dell'utente.

2) Si, percorso relativo
Prova col percorso assoluto (mostra la riga di crontab al limite).

Cya
Questo il crontab

*/1 * * * * /home/sysop/seiscomp3/bin/scexevent.py -a 5

Prima avevo scritto
*/1 * * * * ~/seiscomp3/bin/scexevent.py -a 5

ma il path scritto sul registro di log era comunque giusto

(detected unhandled Python exception in '/home/sysop/seiscomp3/bin/scexevent.py')
*/1 * * * * /home/sysop/seiscomp3/bin/scexevent.py -a 5

Prima avevo scritto
*/1 * * * * ~/seiscomp3/bin/scexevent.py -a 5
Ok, andava bene anche prima, per relativo intendevo altro.

Credevo avessi qualcosa tipo:
*/1 * * * * /usr/bin/python scexevent.py 
...ed ovviamente avresti avuto qualche problema così.

Se sei sicuro che scexevent.py è eseguibile ed è gestito dai corretti utenti, il problema deve essere dentro lo script stesso.

Il fatto che vada se lo lanci una volta da console vuol dire e non vuol dire. Magari, come suggerisce il sistema, stai mancando la gestione di qualcosa? Vedo dentro il codice che gestisci te eccezioni un po' così, alla garibaldina, senza specificare il tipo di eccezione (un autentico anti-pattern). Poi vedo che esegui lo script ogni minuto, sicuro sia un tempo sufficiente per completare l'operazione precedente?

Non riesco a provare lo script, ma a leggerlo qualcosa si dovrebbe migliorare. Potresti pensare di inserire dei test sullo script stesso o dei log un po' più dettagliati, forse sarebbe la strada più semplice.

Cya
Questi i permessi del programma
-rwxr-xr-x. 1 sysop sysop 14709 4 apr 10.38 scexevent.py

come vedi l'utente ha permessi di lettura, scrittura ed esecuzione.

Il fatto che venga eseguito ogni minuto non ha importanza, in quanto fa parte di un'altra serie di programmi che lo richiamano.

L'ho inserito nel cron perchè ho questo errore dal file che lo richiama e volevo vedere se era un problema se veniva chiamato da cron.
I log che vedi li ho scritti al volo per vedere se faceva qualche riga di codice, ma niente, non funziona.

Quello che vedi all'inizio (print con qualche informazione) l'ho messo perche volevo vedere se veniva scritto qualche cosa su un file, infatti da cron la riga completa era

*/1 * * * * /home/sysop/seiscomp3/bin/scexevent.py -a 5> /home/sysop/seiscomp3/uscita
dove su /home/sysop/seiscomp3/uscita inserivo questi print.

Da riga di comando funziona tutto bene, con cron, essendo indirizzato con > e non con >>, non appende le uscite, ma le dovrebbe scrivere di nuove, ma il file risulta sempre vuoto
*/1 * * * * /home/sysop/seiscomp3/bin/scexevent.py -a 5> /home/sysop/seiscomp3/uscita
dove su /home/sysop/seiscomp3/uscita inserivo questi print.

Da riga di comando funziona tutto bene, con cron, essendo indirizzato con > e non con >>, non appende le uscite, ma le dovrebbe scrivere di nuove, ma il file risulta sempre vuoto
c'è uno spazio, vero, tra il "5" e il ">"?
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
no, ora lo inserisco
Fatto, provo e posto
Come sospettavo....

Uguale a prima


Pagina: 1 2 Avanti



Esegui il login per scrivere una risposta.