为什么我的预定工作不起作用?
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
我用 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.like0 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