一直试图运行 cron,但在我的/var/spool/mail/root
"/bin/sh: /disk1/archives/backup.website.cron: Permission denied"
这是我ls -hal
的 cron 作业所在的目录
drwxr-xr-x 4 root root 4.0K Feb 6 04:22 .
drwxr-xr-x 6 root root 4.0K Feb 5 08:14 ..
-rwxr-xr-x 1 root root 105 Feb 6 04:22 backup
-rw-r--r-- 1 root root 102 Feb 5 08:34 backup.database.cron
-rw-r--r-- 1 root root 75 Feb 5 08:33 backup.website.cron
drwxr-xr-x 2 root root 4.0K Feb 5 08:35 databases
我已经backup
设定chmod +x
备份文件如下所示
* * * * * root /disk1/archives/backup.website.cron
30 * * * * root /disk1/archives/backup.database.cron
我运行了 cron
crontab /disk/1/archives/backup
我可以看到我的 cron 作业已设置为运行,因为当我这样做时, crontab -l
我得到了
[root@web archives]# crontab -l
* * * * * /disk1/archives/backup.website.cron
30 * * * * /disk1/archives/backup.database.cron
backup.website.cron 看起来像
tar -zcvf /disk1/archives/websites/`date +%Y-%m-%d_%I:%M:%S%p`.tar.gz /web
而 backup.website.cron 看起来像
mysqldump --opt --all-databases | gzip > /disk1/archives/databases/`date +%Y-%m-%d_%I:%M:%S%p`.sql.gz
我是否遗漏了某处的权限更改?
我是否通过 crontab 运行了正确的脚本?
答案1
chmod +x /disk1/archives/backup.*.cron
您提供给命令的文件crontab
不需要是可执行文件,因为它不是 shell 脚本。您作为 cron 作业调用的任何命令做需可执行。
这里还有另一个奇怪之处。crontab 有两种略有不同的语法。一种有 5 个字段,指定何时执行命令,后面跟着命令本身;这是命令crontab
所需的格式。另一种在 5 个时间字段和命令之间添加了一个用户名。这是/etc/crontab
和目录下的文件使用的格式/etc/cron.*
。(这是在 Ubuntu 11.04 上;在其他系统上组织可能略有不同。)
您说您使用 安装了backup
文件crontab /disk/1/archives/backup
,但backup
您向我们展示的文件root
在每一行都指定了用户。但您的crontab -l
输出未显示root
用户名。
您收到的错误消息与输出一致crontab -l
(如果您提供的文件crontab
有用root
户名,它会尝试root
作为命令执行)。我推测您提供的实际文件crontab
没有root
字段。
man 5 crontab
有关普通 cron 文件和系统 cron 文件之间的差异的信息。