¿Cómo controlar dónde el script ejecutado por cron guarda los archivos?

0

Tengo el siguiente trabajo cron que se ejecuta a las 6 am cada mañana:

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

El script, escrito en perl, recupera los últimos archivos de un sitio web.

Dentro del script perl, la ruta se cambia con:

'cd '/path/to/directory''

Sin embargo, todos los archivos descargados no se guardan en /path/to/directory , se guardan en /Users/username .

¿Qué puedo hacer para que la secuencia de comandos lo guarde en el directorio que quiero?

    
pregunta StevieD 03.02.2016 - 22:54

1 respuesta

1

Hacer un 'cd / ruta' dentro de su script solo cambia el directorio para el shell que se genera para ejecutar el comando del shell. Es lo mismo que hacer

system('cd /path');

No cambia el cwd (directorio de trabajo actual) del propio script. La mejor manera de hacerlo es hacer que su script escriba los archivos en un directorio específico. Si su script de perl es un contenedor directo para wget, puede eliminar el script de perl y hacer algo en la línea de:

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

Si desea hacer esto dentro de Perl (idea de ejemplo, no probado) ...

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)

Una opción final (de nuevo no probada) ...

00 6 * * * cd /path/you/want;/Users/username/path/to/script/wget.pl 1;
    
respondido por el skarface 03.02.2016 - 23:09

Lea otras preguntas en las etiquetas