49 votos

Las tuberías de wget salida a /dev/null en cron

Estoy ejecutando el siguiente comando cada 5 minutos en mi crontab para mantener Phusion Passenger vivo.

*/5 * * * * wget mysite.com > /dev/null 2>&1

Cuando ejecuto este se realiza un wget en la dirección url del sitio de rutas STDOUT/STDERR a /dev/null. Cuando puedo ejecutar desde una línea de comandos que funciona bien y no produce un index.html archivo en mi directorio home.

Cuando se ejecuta desde cron, se crea un nuevo index.html archivo de cada cinco minutos, me dejó con un montón de archivos de índice que no quiero.

Es mi sintaxis incorrecta para la ejecución de la tarea en el cron? Desde una línea de comandos que funciona sin problema, pero desde cron se genera un index.html archivo en mi directorio home.

Estoy seguro de que estoy haciendo un simple error, agradecería si alguien pudiera ayudar.

74voto

martin Puntos 49

Usted puede hacer esto de esta manera:

*/5 * * * * wget -O /dev/null -o /dev/null example.com

Aquí -O envía el archivo descargado a /dev/null y -o registros /dev/null en lugar de stderr. De esa manera la redirección no es necesario en absoluto.

20voto

Ben Bolker Puntos 50041

¿Usted necesita para descargar el contenido o simplemente recibir el 200 OK? Si usted sólo tiene que tener el servidor procesa la solicitud, ¿por qué no simplemente usar el --spider argumento?

10voto

Peter Lamby Puntos 91

Me gustaría utilizar el siguiente:

/5 * * * * wget -O - mysite.com > /dev/null 2>&1

El -O - opción se asegura de que la recuperan el contenido se envía a la salida estándar (stdout).

6voto

Volker Siegel Puntos 115

Usted dice que sólo se necesita el "200 OK" respuesta en un comentario.

Que permite la solución con algunas ventajas adicionales sobre los de
wget -O /dev/null -o /dev/null example.com. La idea no es que se descarte la salida de alguna manera, pero no crear ningún resultado en absoluto.

Que sólo se necesita la respuesta significa que los datos que se descargan en los archivos local index.html no necesita ser descargado en el primer lugar.
En el protocolo HTTP, el comando " GET " se utiliza para descargar un documento. Para acceder a un documento en una forma que hace de todo, excepto de descargar el documento, hay un comando especial 'JEFE'.
Cuando el uso de 'GET' para esta tarea, se descarga el documento y se descarta a nivel local. El uso de 'HEAD' es justo lo que necesita, no se transfiere el documento en el primer lugar. Es siempre volver por el mismo código de resultado como 'GET', por definición.

La sintaxis para utilizar el método de la HEAD con wget es un poco raro: tenemos que utilizar la opción --spider. En este contexto, sólo hace lo que queremos acceder a la URL con la 'HEAD' en lugar de 'GET'.
Podemos utilizar la opción -q (silencioso) para hacer wget no de salida los detalles acerca de lo que hace.

La combinación de ese, wget ni de salida de la nada a stderr, ni guardar un documento.

wget -q --spider 'http://example.com/'

El código de salida nos indica si la solicitud se ha realizado correctamente o no:

$ wget -q --spider 'http://example.com/'
$ echo $?
0
$ wget -q --spider 'http://example.com/nonexisting'
$ echo $?                                          
8

Para un comando en crontab, el hecho de que no hay salida, en ambos casos significa que usted puede utilizar sin obtener ningún resultado como una indicación de errores de nuevo.

Su comando de ejemplo habría cambiado a esto:

*/5 * * * * wget -q --spider mysite.com

Este tiene las mismas ventajas como wget -O /dev/null -o /dev/null example.com. La ventaja adicional es que el registro de salida, y el documento de salida, no se genera, en lugar de generados y desechados de forma local. O supuesto, la gran diferencia es evitar descargar y, a continuación, deseche el documento, index.html.

3voto

user237113 Puntos 21

para mantener Phusion Passenger vivo.

Puede que tu pregunta debería ser acerca de esto, la página web dice:

Un rápido y robusto servidor web y servidor de aplicaciones para

Esto no debería requerir ningún keepalive secuencias de comandos.

De lo contrario, kasperd la solución es perfecta.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: