我使用 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)
我该如何解决这个问题?提前谢谢
答案 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
希望它有效。 谢谢。