一直试图运行一个cron,但不断获取权限死亡错误在我的/var/spool/mail/root
"/bin/sh: /disk1/archives/backup.website.cron: Permission denied"
这是我的ls -hal作业所在目录的ls -hal
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运行正确的脚本?
chmod +x /disk1/archives/backup.*.cron
提供给crontab命令的文件不需要是可执行文件,因为它不是shell脚本。 您作为cron作业调用的任何命令都需要是可执行的。
这里还有一个奇怪的地方。 有两个略有不同的crontab语法。 一个有5个字段,指定何时执行命令,后面跟着命令本身; 这是crontab命令期望的格式。 另一个在5个时间字段和命令之间添加一个用户名。 这是/etc/crontab使用的格式,以及/etc/cron.*目录下的文件。 (在Ubuntu 11.04上,组织可能在其他系统上略有不同)。
你说你用crontab /disk/1/archives/backup安装了你的backup文件,但是你给我们显示的backup文件指定了每一行的root用户。 但是你的crontab -l输出不显示root用户名。
你得到的错误信息与crontab -l输出一致(如果你给crontab的文件有root用户名,它会尝试执行root作为命令)。 我认为你提供给crontab的实际文件没有root域。
man 5 crontab有关正常和系统cron文件之间的区别的信息。