我有一个cron
工作来备份我的数据库:
➜ ~ crontab -l
@daily /etc/cron.d/pg_backup.sh
但是,设置适当的权限时会出现问题。
当我有:
➜ ~ ls -l /etc/cron.d/pg_backup.sh
-rwxr-xr--. 1 root root 1359 Apr 14 21:39 /etc/cron.d/pg_backup.sh
然后检查grep "pg_backup.sh" /var/log/cron
,我看到了:
localhost crond[11881]: (root) BAD FILE MODE (/etc/cron.d/pg_backup.sh)
但是,当我将pg_backup.sh
修改为:
chmod 644 pg_backup.sh
它会禁用警告:
localhost CROND[11064]: (root) CMD (/etc/cron.d/pg_backup.sh)
但是我看到了
➜ ~ cat /var/mail/root
# ...
/bin/sh: /etc/cron.d/pg_backup.sh: Permission denied
那么适当的文件权限是什么?
答案 0 :(得分:0)
问题是您已经安装了要在/etc/cron.d
目录中执行的脚本。该目录用于crontab文件,而不是shell命令。 (看一下该目录中的现有文件。)
在crond
中检查该目录中的任何文件都不是所有者以外的任何人可读或写的(必须是root
),并且不可由任何人执行。所以你必须将权限更改为600
,或更严格的权限,以避免消息 - 然后,正如您所见,您将无法执行脚本。
相反,将脚本放在其他位置并更新您的crontab:
@daily /some/other/directory/pg_backup.sh