为什么我的预定工作不起作用?

Why my scheduled job is not working?

我用 crontab 定义了一个作业,像这样

0 2 * * * dbadmin . /home/dbadmin/back.sh

它不是 root 我想 运行 这个 .sh 文件 dbadmin 用户。

但是当我检查时它不起作用。

在日志中它给出了这个:

Feb 22 21:16:01 localhost crond[14634]: (*system*) BAD FILE MODE (/etc/crontab)
Feb 22 21:16:01 localhost crond[14634]: (dbadmin) RELOAD (cron/dbadmin)
Feb 22 21:16:01 localhost crond[28451]: (dbadmin) CMD (dbadmin . /home/dbadmin/back.sh)

我该如何解决这个问题?提前致谢

使用 crontab 程序,您通常只能访问 5 个调度字段(分钟、小时、月中日、月份和星期几)。但是,通过编辑 system crontab 文件(/etc/crontab 以及 /etc/cron.d 中的文件,使用 Vixie cron(通常在 Linux 上)您可以使用第 6 个字段作为用户名。例如,参见 How to specify in crontab by what user to run script?

如果你用crontab输入这一行

0 2 * * * dbadmin . /home/dbadmin/back.sh
          ^^^^^^^

"dbadmin" 用户名被视为要执行的命令。您可以(如 crontab's manual page) use that line in /etc/crontab. I pointed out that this is Vixie (also known as ISC) crontab. Legacy systems such as Solaris 中所述,有一个功能较弱的 crontab,它不允许将用户指定到 运行 下。

根据cron的手册页,它将通过电子邮件发送输出。可能没有电子邮件,因为命令 "dbadmin" 失败。

您需要使用 sh 命令在

之后执行 sh file.like
0 2 * * * dbadmin sh /home/dbadmin/movefolder.sh

希望有用。 谢谢。

创建一个 crontab 条目作为 dbadmin,其中不包含用户名:

0 2 * * * /home/dbadmin/movefolder.sh > /home/dbadmin/cron.out 2>@1

每天日志文件 /home/dbadmin/cron.out 都应该被一个新的替换。 当您对 cron+movefolder 有信心时,将输出文件替换为 /dev/null.
当上述失败时,检查以 dbadmin:

调用脚本
sh /home/dbadmin/movefolder.sh

当这个工作正常而 cron 失败时,可能是环境问题。尝试像

这样的东西
0 2 * * * . /home/dbadmin/.profile; /home/dbadmin/movefolder.sh > /home/dbadmin/cron.out 2>@1