BLOG ENTRY

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

ubuntu

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

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

# vim /etc/crontab
00     10      *       *       *       root    /home/quall/dayinfomail.sh

# 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

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

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

# sh /home/quall/dayinfomail.sh

expr: syntax error
expr: syntax error
at: garbled time

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

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

$ echo $SHELL
/bin/csh

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

$ echo $SHELL
/bin/csh

$ vim /etc/shells
/bin/sh
/bin/csh
/bin/tcsh

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

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

残念。。

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

関連記事

  1. apache2.2.15をCentOSにソースからインストール[Linux]
  2. mysql5.1.45をCentOSにソースからインストール[Linux]
  3. php5.2.13をCentOSにソースからインストール[Linux]
  4. BitmapDataクラスのPerlinNoiseメソッドでエフェクト[AS3][filter]
  5. [MySQL]ファイルを使ってデータをバックアップ&リストア

WRITE COMMENT


(required)


(required)


(required)

MENU

veltica creative of