让我告诉我先做了什么
#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
添加了这一行,每小时都收到一封空白邮件。
我是新手,需要你的建议才能解决。
答案 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