Come controllare dove lo script eseguito da cron salva i file?

0

Ho il seguente cron job che funziona alle 6 del mattino ogni mattina:

00 6 * * * /Users/username/path/to/script/wget.pl 1;

Lo script, scritto in perl, recupera gli ultimi file da un sito Web.

All'interno dello script perl, il percorso viene modificato con:

'cd '/path/to/directory''

Tuttavia, tutti i file scaricati non vengono salvati in /path/to/directory vengono salvati in /Users/username .

Che cosa posso fare per ottenere lo script per salvarlo nella directory che voglio?

    
posta StevieD 03.02.2016 - 22:54
fonte

1 risposta

1

Facendo un 'cd / percorso' all'interno del tuo script cambia solo la directory per la shell che viene generata per eseguire il comando shell. È la stessa cosa che fare

system('cd /path');

Non cambia CWD (directory di lavoro corrente) dello script stesso. Il modo migliore per farlo è far sì che lo script scriva i file in una directory specifica. Se il tuo script perl è un wrapper lineare per wget, puoi eliminare lo script perl e fare qualcosa sulla falsariga di:

wget -O /full/path/to/file http://host/url/here

Se vuoi farlo in perl (idea di esempio, non testato) ...

use LWP::Simple qw(get);
my $url = 'http://host/url/here';
my $result = get $url;
open(my $fh, ">", "/path/to/file");
print $fh $result;
close($fh)

Un'ultima opzione (ancora non testata) ...

00 6 * * * cd /path/you/want;/Users/username/path/to/script/wget.pl 1;
    
risposta data 03.02.2016 - 23:09
fonte

Leggi altre domande sui tag