crontab 错误(未安装 MTA)但我使用 >/dev/null 2>&1

Kan*_*kit 6 cron configuration

我是 linux 用户的新手

我尝试运行 crontab 以使用 vagrant 用户备份我的数据库

* * * * * /usr/bin/mysqldump -h localhost -u root -p root mydb | gzip > /var/backup/all/database_`date +%Y-%m-%d`.sql.gz >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

当 crontab 运行时,文件夹中没有备份文件(我的备份/所有人都有权限方案755)。

这是错误来自 /var/log/syslog

Aug 16 11:55:01 precise64 CRON[2213]: (vagrant) CMD (/usr/bin/mysqldump -h localhost -u root -p root mydb | gzip > /var/backup/all/database_`date +%Y-%m-%d`.sql.gz >/dev/null 2>&1)
Aug 16 11:55:01 precise64 CRON[2212]: (CRON) info (No MTA installed, discarding output)
Run Code Online (Sandbox Code Playgroud)

所以我认为

  1. 这是关于 crontab 由于权限被拒绝而无法创建备份文件。
  2. 这是关于我没有安装 MTA 但我使用>/dev/null 2>&1禁用 crontab 将其发送到电子邮件为什么会出错?

mdp*_*dpc 11

当然,错误在于您没有实施和激活邮件程序(sendmail、postfix 等)。

话虽如此,您的另一个问题是 >/dev/null 2>&1 ONLY 仅适用/关联到在这种情况下 gzip 的 LAST 命令。因此,您的mysqldump 必须有某种类型的输出到STDERR。

做我认为你想要的正确方法是:

 * * * * *  (command | command ) >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)


小智 6

你可以把:

MAILTO=""
Run Code Online (Sandbox Code Playgroud)

在 crontab 文件的开头,这将阻止它尝试发送电子邮件。