0 votes

Comment contrôler où le script exécuté par cron enregistre les fichiers ?

J'ai le travail cron suivant qui s'exécute tous les matins à 6 heures :

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

Le script, écrit en perl, récupère les derniers fichiers d'un site web.

Dans le script de perl, le chemin est modifié par :

`cd '/path/to/directory'`

Cependant, tous les fichiers téléchargés ne sont pas sauvegardés dans le dossier de l'entreprise. /path/to/directory ils sont sauvés dans /Users/username .

Que puis-je faire pour que le script soit enregistré dans le répertoire que je souhaite ?

1voto

Mythokia Points 129

Faire un `cd /path` dans votre script ne change que le répertoire pour le shell qui est créé pour exécuter la commande shell. C'est la même chose que de faire

system('cd /path');

Il ne change pas le cwd (répertoire de travail actuel) du script lui-même. La meilleure façon de le faire est de demander à votre script d'écrire les fichiers dans un répertoire spécifique. Si votre script en perl est un simple wrapper pour wget, vous pouvez vous passer du script en perl et faire quelque chose du type :

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

Si vous voulez faire cela en perl (idée d'exemple, non testée)...

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)

Une dernière option (encore une fois non testée)...

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X