我通过使用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.
那有什么不对?我该如何解决?
谢谢。
答案 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。
很久以前,如果事情变得不同,那就很抱歉。