我正在尝试设置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 使用sh
not bash
so incron &>
是在 bash 中重定向 stderr 和 stdout 的快捷方式,但sh
.解决方案是在 crontab 中添加 env varibaleSHELL=/bin/bash
或在 crontab 行中的脚本前面添加 env varibale bash -c
,crontab 调用当前的另一个 shell,因此您的请求同时查看是不可能的,解决方案之一可能是邮件代理如果有的话。