Domanda

*/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

Questo è un lavoro di cron.Il comando PHP della seconda riga sembra eseguire anche mentre Lynx sta scrivendo a Apartments.txt, e non vedo la ragione.Questo utilizzo corretto suppone che sto cercando di prevenire leggi da appartamenti.txt mentre Lynx / Grep lo scrive?Grazie!

È stato utile?

Soluzione

Il tuo utilizzo non è corretto.Nota come il tuo primo lavoro Cron è una pipeline composta da due comandi:

/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"
.

che viene quindi condotto a:

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

Quindi il primo comando sta bloccando un file ma è il secondo comando che scrive a quel file!Il secondo comando eseguirà felicemente senza aspettare la serratura.

Un modo per risolvere questo sarebbe quello di scrivere il file mentre si tiene il blocco:

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

Lo svantaggio di questo approccio è che lynx e grep funzionano anche se il file è bloccato.Per evitare questo, dovrai eseguire il tutto sotto la serratura:

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

Con questo approccio dovrai prestare particolare attenzione alla citazione come l'argomento URL di Lynx in quanto richiederà il doppio citatore.

Infine: considerare l'utilizzo di curl o wget anziché lynx.lynx è pensato per l'utilizzo interattivo!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top