0

我通过使用 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.

那么有什么问题呢?我该如何解决?

谢谢你。

4

1 回答 1

0

我已经有几个没有看过 cygwin 了,所以我在这方面的细节会很少。

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

假设时间是 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。

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

于 2010-06-07T23:53:30.433 回答