2011-10-22 20 views
10

Ejemplo:¿Cómo puedo ejecutar un trabajo cron con argumentos y pasar resultados a un registro?

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

El script se ejecuta y accede a los argumentos muy bien, pero los resultados nunca se imprimen a la logfile.log. Además, mi logfile.log es chmod 777, así que sé que tiene acceso de escritura.

¿Puedes corregir mi sintaxis?

+1

¿tiene el usuario acceso de escritura a la carpeta? – mik

+0

sí, carpeta y archivo. Hay otros registros en el mismo directorio que funcionan. Pensé que el problema estaba con los argumentos. Pero si mi sintaxis es correcta tendré que buscar algo más para depurar. – Ryan

+1

Tal vez no deberías usar '* * * * *' ya que esto sobrescribe el registro cada 60 segundos ... ¿Qué ves cuando agregas '>>'? – Jens

Respuesta

11

Parece que está buscando el archivo de registro en la carpeta incorrecta. Prueba este

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

A continuación, busque el archivo de registro en la carpeta/ruta/a/script. También puede ser un problema de permiso de escritura. Además, revisa tu script en busca de errores. Su comando crontab parece estar bien.

+0

Lo siento, mi pregunta no fue del todo clara. He estado usando la ruta raíz todo el tiempo. Acabo de actualizar la pregunta para aclarar. Entonces estás diciendo que este es el formato correcto, ¿verdad? – Ryan

+0

Ahora el comando se ve bien, ¿puede haber un problema de permisos de escritura? Además, pruebe el script cd/path/to /, podría ayudar. – mik

+0

@ rcode74: Su edición rompió el comando. Voy a tirarlo hacia atrás. Necesita 'cd' al directorio que contiene' script.php' * y luego * invocar el script. El '/ path/to/script.php' no es literal; representa el nombre de cualquier directorio que contenga el script. –

1

¿El comando funciona correctamente desde la línea de comandos? Es posible que los argumentos contengan algunos caracteres tratados especialmente por shell. En ese caso, debe citar todo el comando para evitar que Shell intente modificar los argumentos.

Cuestiones relacionadas