Pregunta

*/10 * * * * /usr/bin/flock -x -w 10 /tmp/craigslist.lock /usr/bin/lynx -width=120 -dump "http://sfbay.craigslist.org/search/roo/sfc?query=&srchType=A&minAsk=&maxAsk=1100&nh=6&nh=8&nh=16&nh=24&nh=17&nh=21&nh=22&nh=23&nh=27" | grep "sort by most recent" -A 53 > /home/winchell/apartments.txt

*/10 * * * * /usr/bin/flock -x -w 10 /tmp/craigslist.lock /usr/bin/php /home/winchell/apartments.php

Este es un trabajo cron.La segunda línea de comando php parece ser la ejecución, incluso mientras que el lince está escrito apartments.txt y no veo la razón.Es esto correcto uso suponiendo que yo estoy tratando de evitar la lectura de apartments.txt mientras que el lince/grep son la escritura?Gracias!

¿Fue útil?

Solución

Su uso no es correcto.Observe cómo su primera tarea en el cron es una tubería que consta de dos comandos:

/usr/bin/flock -x -w 10 /tmp/craigslist.lock /usr/bin/lynx -width=120 -dump
    "http://sfbay.craigslist.org/search/roo/sfc?query=&srchType=A&minAsk=&maxAsk=1100&nh=6&nh=8&nh=16&nh=24&nh=17&nh=21&nh=22&nh=23&nh=27"

que se transfiere a continuación:

grep "sort by most recent" -A 53 > /home/winchell/apartments.txt

Así que el primer mandamiento es el bloqueo de un archivo pero es el segundo comando que se escribe a ese archivo!El segundo comando estará feliz de ejecutar sin esperar a que el bloqueo.

Una forma de solucionar esto sería escribir el archivo manteniendo el bloqueo:

lynx etc... | grep etc.. |
    flock -x -w 10 /tmp/craigslist.lock tee /home/winchell/apartments.txt

La desventaja de este enfoque es que lynx y grep correr, incluso si el archivo está bloqueado.Para evitar esto, usted tendrá que ejecutar la totalidad de la cosa en virtud de la cerradura:

flock -x -w 10 /tmp/craigslock.lock sh -c "lynx etc... | grep etc... >thefile"

Con este enfoque, usted tendrá que prestar atención a citar como el argumento URL de lince, ya que se requieren doble cotización.

Finalmente:considere el uso de curl o wget en lugar de lynx. lynx se supone que es para uso interactivo!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top