Bash 运行cronjob

Bash 运行cronjob,bash,scripting,cron,crontab,Bash,Scripting,Cron,Crontab,在过去的几个小时里,我一直对克朗乔布斯感到困惑。我已经阅读了文档和示例。我了解基本知识和概念,但还没有找到任何可行的方法。因此,我非常感谢你能帮我解决这个难题 最终目标是安排每天执行django函数。在此之前,我想知道我可以安排任何旧脚本运行,先运行一次,然后定期运行 所以我想: 我要编写一个简单的脚本,也许是一个bash脚本,它可以让我确定是的,它确实成功运行了,还是失败了。 2将此脚本安排在一小时的最高峰运行 我尝试编写一个bash脚本,简单地将一些文本输出到终端: #!/bin/bash

在过去的几个小时里,我一直对克朗乔布斯感到困惑。我已经阅读了文档和示例。我了解基本知识和概念,但还没有找到任何可行的方法。因此,我非常感谢你能帮我解决这个难题

最终目标是安排每天执行django函数。在此之前,我想知道我可以安排任何旧脚本运行,先运行一次,然后定期运行

所以我想: 我要编写一个简单的脚本,也许是一个bash脚本,它可以让我确定是的,它确实成功运行了,还是失败了。 2将此脚本安排在一小时的最高峰运行

我尝试编写一个bash脚本,简单地将一些文本输出到终端:

#!/bin/bash
echo "The script ran"
然后我把它放到一个.txt文件中

MAILTO = *****.******@gmail.com
05 * * * * /home/vadmin/development/test.sh

但什么也没发生。我肯定我做了很多错事。我从哪里开始解决所有这些问题?

Crontab本身不会发送电子邮件,定义MAILTO变量也不会改变主意。您需要这样做:

SHELL=/bin/bash
MAILTO=dude@gmail.com
BASH_ENV=/home/dude/.bash_profile
05 * * * Mon-Fri echo "Hello from Cron script" | mail -s "My Script Output" "${MAILTO}"
首先,确保mail-s地址实际上是从您的邮箱发送电子邮件的地址。 然后调用crontab-e来编辑crontab文件。这样说:

SHELL=/bin/bash
MAILTO=dude@gmail.com
BASH_ENV=/home/dude/.bash_profile
05 * * * Mon-Fri echo "Hello from Cron script" | mail -s "My Script Output" "${MAILTO}"
保存文件并关闭编辑器,cron应该会获取更改。这应该有效,你应该收到电子邮件。然后可以用脚本替换Cron脚本中的echo Hello


希望能有帮助。祝你好运

嗨,Ed。你最好在serverfault上问这个问题。你是对的,crontab不发送邮件,但cron发送邮件。您不必显式地通过管道发送到邮件。任何未重定向到stdout的输出都将在邮件正常工作的情况下发送。@Dennis:Hm,我不知道。很多次我在配置中有MAILTO,但没有收到一封电子邮件。。。也许这背后还有别的原因。无论如何,感谢您的注释。条目末尾是否有>文件名或>/dev/null?脚本有内部重定向吗?@Dennis:也许,我现在不能肯定。我知道的唯一一件事是,重定向确实有效,最重要的是,您可以将不同作业的输出发送到不同的电子邮件地址。