2011-10-22 4 views
10

Esempio:Come posso eseguire un cron job con argomenti e passare i risultati a un log?

* * * * * /usr/bin/php /full/path/to/script.php arg1 arg2 > /full/path/to/logfile.log 

Lo script viene eseguito e accede agli argomenti bene, ma i risultati non sono mai stampato al logfile.log. Inoltre, il mio logfile.log è chmod 777, quindi so che ha accesso in scrittura.

Puoi correggere la mia sintassi?

+1

l'utente ha accesso in scrittura alla cartella? – mik

+0

sì, cartella e file. Ci sono altri registri nella stessa directory che funzionano. Pensavo che il problema fosse con gli argomenti. Ma se la mia sintassi è corretta dovrò fare un po 'di più per eseguire il debug. – Ryan

+1

Forse non dovresti usare '* * * * *' dato che questo sovrascrive il log ogni 60 secondi ... Cosa vedi quando ti aggiungi con '>>'? – Jens

risposta

11

Sembra che si stia cercando il file di registro nella cartella sbagliata. Prova questo

* * * * * cd /path/to/script.php ; ./script.php arg1 arg2 >> logfile.log 

Quindi cercare il file di registro nella cartella/path/to/script. Può anche essere un problema di autorizzazione alla scrittura. Inoltre, controlla la presenza di errori nello script. Il comando crontab sembra OK.

+0

Scusa, la mia domanda non è stata del tutto chiara. Ho usato il root path per tutto il tempo. Ho appena aggiornato la domanda per chiarire. Quindi stai dicendo che questo è il formato corretto, giusto? – Ryan

+0

Ora il comando sembra ok, potrebbe esserci un problema di permessi di scrittura? Inoltre, prova il cd/path/to/script, potrebbe essere d'aiuto. – mik

+0

@ rcode74: la modifica ha interrotto il comando. Ho intenzione di tornare indietro. Ha bisogno di 'cd' nella directory che contiene' script.php' * e quindi * di invocare lo script. '/ Path/to/script.php' non è letterale; rappresenta il nome di qualunque directory contiene lo script. –

1

Il comando funziona correttamente dalla riga di comando? Potrebbe essere possibile che gli argomenti contengano alcuni caratteri trattati appositamente dalla shell. In tal caso è necessario citare l'intero comando per impedire alla shell di armeggiare con gli argomenti.