2010-06-04 8 views
0

J'ai un travail cron planifié en utilisant cygrunsrv et cron de vixie pour cygwin. Le travail est un script shell qui copie les fichiers d'un répertoire à un autre et les renomme.pourquoi cygwin cron ne peut pas trouver un fichier quand cygwin ls peut?

Le script se trouve dans /home/martin/my/script/copy_files.sh. Et l'autorisation pour le chemin d'accès est:

drwxrwxrwt+ 1 martin root   0 2010-06-02 17:36 home 
drwxr-xr-x+ 1 martin Domain Users 0 2010-06-03 16:19 martin 
drwxrwxrwt+ 1 martin Domain Users 0 2010-06-02 16:47 my 
drwxrwxrwt+ 1 martin Domain Users 0 2010-06-04 16:31 script 
-rwxr-xr-x 1 martin Domain Users 439 2010-06-02 18:10 copy_files.sh 

Quand je ls -l, le fichier source est:

-rwxrw-rw- 1 martin Domain Users 13856 2010-06-04 10:05 .bash_history 

Mais lorsque le travail est exécuté, la commande cp a échoué en raison

cp: /home/martin/.bash_history: The system cannot find the path specified. 

Alors qu'est-ce qui ne va pas? Comment puis-je le réparer?

Merci.

Répondre

0

Je n'ai pas regardé cygwin pour quelques-uns donc mes détails dans ce vont être peu.

Votre problème est l'arborescence de répertoires. Vous devez définir cwd (utiliser cd) sur/home/martin avant de copier. L'astuce consiste à savoir où/home est situé, par rapport à l'endroit où cron se connecte. Je ne m'en souviens franchement pas, mais je me souviens que je ne pouvais pas le trouver dans le docset.

Supposons que l'heure est 15:28. aller dans crontab -e ajouter ceci:

30 * * * * /usr/bin/echo "current dir= $(pwd) $PATH" 2&>1 > ./19191919.log 

attendre jusqu'à 15h31, allez dans crontab -e et supprimer cette entrée. Nous ne le voulons plus

find/-type f -name 19191919.log -exec /usr/bin/cat {} \; 

Ceci vous dira ce que vous devez savoir. à propos à la fois du chemin et où le répertoire de connexion se révèle être. Mon expérience avec vixie était que ce n'était pas le répertoire de base dans/etc/passwd

Il y avait un certain fichier .conf qui a remplacé/etc/passwd.

C'était il y a longtemps, donc désolé si les choses tournent différemment.