BLOG ENTRY

cronで毎日ランダムな時間にメール送信[cron][Linux]

ubuntu

cronによるバッチ処理は決まった時間にしか処理できない。

これを例えば、
「手動でお知らせメールを送ってるように見せたい」などの理由で
毎日10:00~18:00の間で毎日1回メール送信したい、
のときにはこんな方法でやってみる。

[sourcecode language=”plain”]
# vim /etc/crontab
00 10 * * * root /home/quall/dayinfomail.sh
[/sourcecode]

[sourcecode language=”plain”]
# vim /home/quall/dayinfomail.sh

#!/bin/bash
BASE_INT=`expr $RANDOM + 480`;
RANDOM_MINUTES=`expr $BASE_INT % 480`;
at -f sendmail.php now + $RANDOM_MINUTES minutes
[/sourcecode]

で、sendmail.phpにメール送信の内容を書く。

で、自宅環境だと問題なく動作するのに、別環境だと全然動かない。。
調べてみると、シェルスクリプトでシンタックスエラーが。。。

[sourcecode language=”plain”]
# sh /home/quall/dayinfomail.sh

expr: syntax error
expr: syntax error
at: garbled time
[/sourcecode]

どうやら、$RANDOM
で参照できていないご様子。
$ man sh
でもやっぱり変数リストに入っていないご様子。

デフォルトのシェルを見てみる。

[sourcecode language=”plain”]
$ echo $SHELL
/bin/csh
[/sourcecode]

デフォルトはbashではなくcshでした

[sourcecode language=”plain”]
$ echo $SHELL
/bin/csh

$ vim /etc/shells
/bin/sh
/bin/csh
/bin/tcsh
[/sourcecode]

なんとまぁbash自体入っていない。。。

bashインストールをできない環境だったので、
しかたなくPHP側でランダム時間に処理をすることにしましたw

残念。。

※2009年9月2日追記
at -fはシェルスクリプト以外を実行できないようなので、phpを実行するためのシェルスクリプトを間に含む必要がありました。。

WRITE COMMENT


(required)


(required)


(required)

MENU

veltica creative of twitter