我为我们的本地开发服务器(运行Ubuntu服务器版本9.10)编写了一个备份脚本,它只是一个简单的脚本,用于打包和压缩本地根目录,并将其放置在备份文件夹中。
当我运行以下命令时,它可以正常工作:
$ bash backups.sh
但是当我通过crontab运行它时,它无法工作。
59 23 * * * bash /home/vnc/backups/backup.sh >> /home/vnc/backups/backup.log 2> $1
我收到了错误信息。
/bin/sh: cannot create : nonexistent
脚本将tar.gz文件制作在其运行的文件夹中(/home/user1),但随后尝试通过使用fstab从网络驱动器将其复制到已挂载的共享文件夹(/home/backups,实际上是192.168.0.6/backups)。已挂载的共享文件夹权限为777,但所有者和组与运行脚本的用户不同。我使用bash而不是sh来运行脚本,以解决我过去遇到的“bad substitution”错误。
该文件的前两行为:
! /bin/bash
cd /home/vnc/backups
我可能没有提供足够的信息来完全回答这篇文章,但如果需要,我可以发布更多信息,但我不知道下一步该去哪里查找。
set
或declare
命令将环境变量转储到某个临时文件中并进行比较。很可能与工作目录或类似的东西有关。 - Maxim Sloykoenv
更适合于打印环境信息,抱歉给你带来了误导。 - Maxim Sloykoenv
显示我正在使用/bin/bash/
,我没有尝试在任何地方使用/bin/sh/
,所以我无法理解为什么错误与它有关。 - Pete