crontab 向我发送电子邮件,称未找到 /bin/bash/ mail 或 /bin/bash mailx

crontab 向我发送电子邮件,称未找到 /bin/bash/ mail 或 /bin/bash mailx

更新:cron字符串现在的结构是正确的。

我已经在我的mailto:[email protected],[email protected]crontab

我现在安排了这项 crontask:

*/5 * * * * root /bin/bash /scripts/db-bkup-test &>/tmp/myDbBack.log; mailx -s "夜间测试数据库备份正在成功运行"[电子邮件保护][电子邮件保护]

*/5 * * * * root /bin/bash /scripts/db-bkup-test &>/tmp/myDbBack.log; mail -s "夜间测试数据库备份正在成功运行"[电子邮件保护][电子邮件保护]

我收到电子邮件中无法找到 /bin/bash 邮件的错误。我觉得这太搞笑了。那么我该如何修复这个错误呢?

答案1

编辑 cron 文件的方法如下:

crontab -e

下面是一个基本的 cronjob 示例,它每 6 小时转储一次数据库并发送一封电子邮件,该电子邮件将包含命令输出到标准输出给汤姆汉克斯和汤姆克鲁斯的内容:

MAILTO="[email protected],[email protected]"
0 */6 * * * mysqldump -u tom_hanks -pHANKS_TOM --host=10.0.0.1 mycompany > /home/tom_hanks/db.sql

现在邮件命令要工作,您需要一个 MTA 代理。安装 postfix 以通过 ubuntu/debian 中的终端获取邮件命令:

sudo apt-get update && sudo apt-get install -y postfix mailutils

或者

sudo dnf update && sudo dnf install postfix mailx -y 

对于旧版 Redhat 或 Fedora,用 yum 替换 dnf。

为了邮箱您可以安装bsd-mailx在 ubuntu/debian 上:

sudo apt-get update && sudo apt-get install bsd-mailx 

如果您已经安装了 postfix,您可以在 ubuntu/debian 的终端中使用此命令进行故障排除:

sudo dpkg-reconfigure postfix

使用 iptables 打开端口 25:

iptables -I INPUT -p tcp -m tcp --dport 25 -j ACCEPT

由于您希望 root 运行 cronjob,因此使用

sudo crontab -e

然后像这样添加你的 cronjob:

*/5 * * * * sh /scripts/db-bkup-test.sh &> /tmp/myDbBack.log &&  mail -s "Nightly Test Database Back-up Is Running Successfully" [email protected],[email protected] < /dev/null

mail 命令将需要一个电子邮件正文,而我们提供的正文为 null(无)

答案2

所以对 Linux 服务器端不是很熟悉,但还是搞清楚了。我安装了 mailx。

yum 安装 mailx

使用此来源。

我使用 cmd 测试了该服务:

$ mailx -s 'Test' [email protected] > /dev/null

更新了 cron 以反映与上面相同的空白部分> /dev/null

相关内容