0

最初に私がしたことを教えてください

#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ところ、1 時間ごとに空のメールが届きました。

私は完全に初心者です。解決するにはあなたのアドバイスが必要です。

4

2 に答える 2

2

問題は ./update.sh > mail.txt にあると言うつもりです

Cron はパスでおかしい場合があります - これらを絶対パスにして、もう一度やり直してください。

于 2013-07-25T04:33:23.327 に答える
1

インタプリタ ディレクティブの前の行 (行の前#!) は間違っていますが、問題ではない可能性があります。は#!、実行可能ファイルの最初の 2 文字としてのみ特別であり、どのプログラムで開く必要があるかを識別します (/bin/bashこの場合)。シェルは、デフォルトでスクリプトを解釈しようとする傾向がありますが、これは信頼できません。特に、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
于 2013-07-25T07:51:46.227 に答える