为什么cygwin cron在cygwin ls可以找不到文件的时候?

时间:2010-06-04 20:45:00

标签: shell cygwin crontab

我通过使用cygrunsrv和vixie的cron为cygwin安排了一个cron作业。该作业是一个shell脚本,它将文件从一个目录复制到另一个目录并重命名。

该脚本位于/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.

那有什么不对?我该如何解决?

谢谢。

1 个答案:

答案 0 :(得分: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

中的主目录

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

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