PDA

View Full Version : [Raspbian] [BASH] [PHP] Problema di timeout


piez91
06-11-2013, 20:55
Ciao a tutti,

Ho necessità di impostare un timeout a un comando eseguito tramite script in bash, il comando è molto semplice:

php /percorso/file/da/eseguire.php

Avrei necessità di impostare un timeout all'esecuzione del comando, cioè se dopo 30 secondi è ancora in esecuzione lo devo killare. Il comando risulta in esecuzione se digito "ps aux" probabilmente esiste il modo per verificare se è in esecuzione e killarlo, purtroppo non ho trovato molto.

Spero qualcuno possa darmi qualche dritta su come procedere.

Grazie mille in anticipo:D

Gimli[2BV!2B]
06-11-2013, 21:57
timeout (http://www.gnu.org/software/coreutils/manual/html_node/timeout-invocation.html) dovrebbe fare al caso tuo.

Comando che resta in esecuzione per 50 secondi (sleep 50) con timeout di 30 secondi:

valore di ritorno 124, timeout
tempo effettivamente trascorso prima dell'invio del segnale KILL al comando: 30 secondi

gimli@sertan ~ $ timeout -k 30.0s 30.0s sleep 50
gimli@sertan ~ $ echo $?
124
gimli@sertan ~ $ time timeout -k 30.0s 30.0s sleep 50

real 0m30.001s
user 0m0.000s
sys 0m0.000s
Comando che resta in esecuzione per 10 secondi (sleep 10) con timeout di 30 secondi:

valore di ritorno 0, vale a dire il valore di ritorno di sleep, terminato con successo dopo 10 secondi

gimli@sertan ~ $ timeout -k 30.0s 30.0s sleep 10
gimli@sertan ~ $ echo $?
0

piez91
09-11-2013, 18:12
Grazie,
Il comando sembra perfetto, sarebbe ciò che fa al caso mio.
Purtroppo quando vado a implementarlo in uno script suppongo gli manchino i permessi per killare il processo e non fa nulla. Eseguendo i comandi da terminale invece funziona tutto.
Sai come posso risolvere? Ci ho provato con il risultato di fare un po' di casino senza capire realmente cosa fare. Lo script è eseguito con privilegi di root.

Gimli[2BV!2B]
10-11-2013, 02:03
Non sapendo come sia fatto lo script di lancio né come sia eseguito (cron? anacron? init? altro?) ipotizzo che non abbia il path del comando corretto, non credo non abbia il diritto di agire.

Non sapendo neppure cosa faccia lo script php, potrebbe essere lui a fallire, forse per problemi di path o variabili di ambiente o perché ha la luna storta.