2010-06-04 95 views
0

我通过使用cygrunsrv和vixie的cron for cygwin获得了cron工作。该作业是一个shell脚本,用于将文件从一个目录复制到另一个目录并重命名它们。为什么cygwin cron在cygwin ls可以找不到文件?

该脚本位于/home/martin/my/script/copy_files.sh中。而该路径的权限是:

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 

当我ls -l命令,源文件是:

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

但在执行作业时,cp命令失败,原因是

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

那又怎么了?我该如何解决它?

谢谢。

回答

0

我还没有看过cygwin的一些,所以我的细节将会很少。

你的问题是目录树。在复制之前,您需要将cwd(使用cd)设置为/ home/martin。诀窍是知道/ home所在的位置,相对于cron登录的位置。我坦率地不记得,但我确实记得我在docset中找不到它。

我们假设时间是15:28。进入crontab -e命令补充一点:

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

等到15:31,进入crontab -e命令,并删除该条目。我们不再需要它

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

这会告诉你你需要知道什么。关于PATH和登录目录结果。我对vixie的体验是,它不是/ etc/passwd中的主目录

有一些覆盖/ etc/passwd的.conf文件。

这是很久以前,很抱歉,如果事情变得不同。