如何让Cron运行

如何让Cron运行

我正在尝试设置cron运行该mysqlauditgrep命令(它是 MySQL 5.6 实用程序包)。该mysqlauditgrep命令在 bash 中。

我要运行的命令是:

mysqlauditgrep --format=GRID /var/lib/mysql/audit.log

该命令将使我的 mysql 创建的审计日志以网格格式查看。它不在 mysql shell 中运行。

所以我刚刚安装了 Cron 并通过设置以下内容来设置 crontab:

00 11 * * fri root usr/bin/mysqlauditgrep mysqlauditgrep --format=GRID /var/lib/mysql/audit.log

在我进入 crontab 文件后,我确实运行了 /sbin/service crond start 。

但我无法查看该操作是否已发生。

答案1

你的 crontab 行应该是这样的:

00 11 * * fri /usr/bin/mysqlauditgrep --format=GRID /var/lib/mysql/audit.log

键入man 5 crontab以检查 crontab 文件的语法

答案2

您在 cron 条目中的行包括root,但这不是必需的,因为当您调用crontab -e它将开始cron以当前用户身份进行编辑,例如root。所有 cron 条目都位于下面,/var/spool/cron/<user>以便您可以检查条目。此外,/var/log/cron您还可以检查 cron 日志,其中包含 cron 作业的特定消息。因此,您可以检查 cron 是否执行了操作,当然如果您的脚本正常的话,还要注意 cron 条目的最佳方法是将它们重定向到,以>/dev/null避免在 MTA 正在运行时出现一些垃圾邮件,最后一个是将日志记录添加到您的脚本本身中,以便您可以 100% 确定一切正常。

默认情况下 cron 使用shnot bashso incron &>是在 bash 中重定向 stderr 和 stdout 的快捷方式,但sh.解决方案是在 crontab 中添加 env varibaleSHELL=/bin/bash或在 crontab 行中的脚本前面添加 env varibale bash -c,crontab 调用当前的另一个 shell,因此您的请求同时查看是不可能的,解决方案之一可能是邮件代理如果有的话。

相关内容