Cronjob每小时运行并发送电子邮件结果

时间:2013-07-25 04:14:47

标签: bash

让我告诉我先做了什么

#update.sh
#!/bin/bash
/usr/bin/freshclam
maldet -b -a /home

另一个脚本

#doandmail.sh
./update.sh > mail.txt

SUBJECT="Shell Script"
EMAIL="myemail@gmail.com"
EMAILMESSAGE="mail.txt"

/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE

当我使用./doandmail.sh运行doandmail.sh时,会发送包含结果的电子邮件。我在cron @hourly /custom/doandmail.sh添加了这一行,每小时都收到一封空白邮件。

我是新手,需要你的建议才能解决。

2 个答案:

答案 0 :(得分:2)

我要说问题出在./update.sh&gt; mail.txt

Cron对于路径很有趣 - 让这些成为绝对路径并再试一次。

答案 1 :(得分:1)

解释器指令之前的行 - 在#!行之前 - 是错误的,但可能不是你的问题。 #!仅作为可执行文件的前两个字符特殊,并标识应打开它的程序(在本例中为/bin/bash)。 shell会倾向于通过默认来解释脚本,但这不可靠 - 特别是对于非sh脚本。

其次,http://www.talisman.org/~erlkonig/documents/commandname-extensions-considered-harmful

所以在/custom/update

#!/bin/bash
#  update

/usr/bin/freshclam
maldet -b -a /home

然后运行:chmod +x /custom/update

./doandmail

#!/bin/bash
#  doandmail

SUBJECT="Shell Script"      # these don't need to be uppercase
EMAIL="myemail@gmail.com"   # ...though it doesn't hurt anything
EMAILMESSAGE="mail.txt"     # usually only exported variable are upper.

/custom/update | /bin/mail -s "$SUBJECT" "$EMAIL"   # no need for a tmp file.

然后:chmod +x doandmail

当您的crontab运行时,它将不会与您正在考虑的目录相同,甚至不会出现您可能期望的相同环境,除非您明确设置它们。它最有可能打破./update中的doandmail ...行。因此上面是/custom/update

在你的crontab中:

@hourly /custom/doandmail