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

时间:2015-02-22 14:32:55

标签: linux centos crontab vertica

我使用 crontab 定义作业

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

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

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

在日志中给出了这个:

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)

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

3 个答案:

答案 0 :(得分:1)

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

如果您使用crontab输入此行

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

“dbadmin”用户名被视为要执行的命令。您可以(如crontab手册页中所述)在/ etc / crontab中使用该行。我指出这是 Vixie (也称为ISC)crontab。传统系统(如Solaris)的crontab功能较弱,不允许指定用户在其下运行。

根据cron的手册页,它将通过电子邮件发送输出。也许没有电子邮件,因为命令“dbadmin”失败了。

答案 1 :(得分:1)

将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

答案 2 :(得分:0)

您需要使用sh命令执行sh file.like

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

希望它有效。 谢谢。