Perché nel mio crontab funziona solo un comando wget?


15

Vorrei recuperare il contenuto da uno script PHP sul mio server due volte al giorno, modificando una variabile di query lang per impostare la lingua desiderata e salvare questo contenuto in due file specifici della lingua. Questo è il mio crontab:

*/15 * * * * ~root/apache.sh > /var/log/checkapache.log
10 0 * * * wget -O /path/to/file-sv.sql "http://mydomain.com/path/?lang=sv"
11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en"

Il problema è che viene eseguita solo la prima riga di comando di wget (o per essere precisi: l'unico file che viene scritto è /path/to/file-sv.sql ). Se cambio la seconda e la terza riga, /path/to/file-en.sqlviene invece scritta. La prima riga funziona sempre come previsto, indipendentemente da dove si trovi.

Ho quindi provato a usare lynx -dump "http://mydomain.com/path/?lang=xx" > /path/to/file-xx.sql senza ; rimane solo la prima riga di lince eseguita correttamente. Anche mescolando wget e lynx non è cambiato questo!

Sempre un po 'disperato! Mi sto perdendo qualcosa? Esistono migliaia di articoli su crontab (combinato con) wget o lynx, ma tutto sembra coprire le impostazioni e la sintassi di base. Qualcuno ha idea di cosa sto facendo di sbagliato?

Grazie
Alexander


Sei sicuro che ogni volta che accedi a mydomain.com/path/?lang=en viene restituito qualcosa? hai provato questo da una riga di comando per vedere cosa succede (wget -O - mydomain.com/path/?lang=en )?
Torian,

1
Proverei a cancellare e ricreare il ritorno in carrozza tra le 2 e le 3.
Antonius Bloch,

La migliore pratica è specificare il percorso completo degli eseguibili in crontab. Come: "/ usr / bin / wget". Non penso che questo sarebbe d'aiuto nel tuo caso, dal momento che uno dei croni funziona.
Antonius Bloch,

Cosa viene visualizzato nel registro di cron quando ciò accade?
fagioli

@Torian: funziona come un fascino.
Alexander Wallin,

Risposte:


42

Prova ad aggiungere newline alla fine del tuo crontab.


1
Sei una manna dal cielo! Questo è stato fatto! Ti voterei se avessi la reputazione. :)
Alexander Wallin,

1
@gelraen Ma ... perché?
Samuel,

2

C'è qualcosa nel testo che non va. Modifica il tuo crontab in vim, quindi mostra i personaggi invisibili.

:set invlist

Dovresti essere in grado di vedere e quindi correggerlo.


Sbagliato come? Come lo modifico in Vim? Ho provato a riscrivere l'intero file nel caso in cui il copia e incolla causasse problemi.
Alexander Wallin,

@afEkenholm: come lo modifichi ora?
bahamat,

1
@bahamat:# crontab -e
Alexander Wallin,

@afEkenholm: fai questo:EDITOR=vim crontab -e
bahamat,

@bahamat: sembra tutto a posto. Hai un viola $alla fine di ogni riga?
Alexander Wallin,

1

Prova ad aggiungere il reindirizzamento, per eseguire il debug di crontab (o leggere la posta root):

11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en" > /tmp/crontab_ouptput 2> /tmp/crontab_error

Esegui anche 'wget -O /path/to/file-en.sql " http://mydomain.com/path/?lang=en "' dalla console.

Usa anche 'crontab -e' per la validazione di nuovo crontab.

Inoltre, prova a eliminare la riga non funzionante e a riscriverlo dalla tastiera.

Backup corntab ed esegui comando:

crontab -l | crontab -

L'aggiunta /tmp/crontab_ouptput 2> /tmp/crontab_errorfunziona solo per la prima riga. L'esecuzione del comando dalla console funziona perfettamente. Ho riscritto l'intero file a mani nude, ma non è cambiato nulla.
Alexander Wallin,

Eseguire il backup di crontab e provare: crontab -l | crontab -
alvosu,

Grazie per gli sforzi, @alvosu, ma una semplice newline ha funzionato!
Alexander Wallin,

1

Ho appena trascorso un po 'di tempo a provare le risposte sopra (aggiungere nuove righe, eliminare nuove righe, ecc.) Su un sistema che esegue cronie . È stato infine trovato un bug in cronie 1.5.3 che esegue solo il primo processo cron per ciascun utente . È stato risolto in 1.5.4

https://github.com/cronie-crond/cronie/issues/30

Spero che questo salvi qualcuno qualche volta ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.