[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:09066] Q:通常ログインと、cron起動は何か違う?



 みなさま、おはようございます。こんにちわ。こんばんわ
 早速で申し訳ないのですが、通常にユーザー名を入力してログインしたとき
と、cronで呼び出した時とでは、環境が異なるのでしょうか?

 実は、mknmzでのインデックス作成を自動化しようと、下に添付したような
perlスクリプトを書きました。
 これを使うと、購読しているメーリングリストのデータを、自動的に月別に分
けて、インデックスも作成します。コンソール画面で何度も試験しましたが、問
題ありませんでした。

 ところが、それならばこれをcronにやらせて、自動化しようと、

>  35 8,17 * * * /home/www/mhonarc.pl 

 をcrontabに組み込んで、翌朝見てみたら、新着のメールだけ、インデックスが
文字化けしていました。
 文字化けはnamazuのインデックス部分だけで、実際のMLログや、ツリー等は正
常でした。

 再度cronを切って、コンソールで実行すると、文字化けは起こりません。

 と、いう事は、cronで実行する時に、コンソールとは違う環境になっているの
でしょうか?
 また、cronでもコンソールと同じ環境にするにはどうしたら良いでしょうか?


--

    =============================================
      株式会社エルピーカンシサービス 関東営業所
      吉川 一浩(Kazuhiro Yoshikawa)
      E-Mail: lpk@aioros.ocn.ne.jp
    =============================================


-- mhonarc.pl --
#!/usr/bin/perl

#
#
system "/usr/bin/fetchmail --quit";
#
#MLタイトルを配列に設定
@ML =
("apache","linux98","mn128soho","namazu","pgsql","plamo","samba","perl","java_study","netbsd98","jbuilder");
#
#作業ディレクトリ
$MAINDIR = "/home/www/htdocs/";
#
#年・月データの取得
$YEMO = &get_date_string;
#
#MLタイトルが無くなるまで処理を繰り返し
foreach (@ML) {
  #
  #ディレクトリデータの作成
  $CO = "$MAINDIR";
  $CO .= "$_/$YEMO";

  if(!opendir(DIRHANDLE,$CO )) {
    #
    #年月のディレクトリは無いので、作成する
    mkdir $CO ,0777 or die "$CO:cannot make\n";
    #
    #メールを処理する
    &mailmanage
  } else {
    #
    #年月のディレクトリがあるので、受信メールを処理する
    print "dir ok!\n";
    &mailmanage
  }
    #
    #処理終わり

}

#
#
system "/usr/bin/fetchmail -f /home/www/fetchmailrc --daemon 300";


#
#日付入力サブルーチン
sub get_date_string {
	local($min,$hour,$day,$mon,$year);
	($sec,$min,$hour,$day,$mon,$year) = localtime(time);
	$year += 1900;
	$mon++;
	if ($mon < 10) { $mon = "0$mon";}
	return "$year$mon";
}

#
#メール処理ルーチン
sub mailmanage {
  opendir DIRHANDLE,"/home/www/procmail/$_";
  @DIR = readdir DIRHANDLE;
    if ( $#DIR > 1) {
      #
      #ディレクトリにメールがあるとき
      #
      #MHonArcでメールをhtmlに変換
      $co = "/usr/local/bin/mhonarc ";
      $co .= "-add ";
      $co .= "-rcfile /home/www/.mhonarc.rc ";
      $co .= "-modtime ";
      $co .= "-tlevels 10 ";
      $co .= "-multipg ";
      $co .= "-outdir $CO ";
      $co .= "/home/www/procmail/$_";
      system " $co";
      print "$_:Mail->html OK!\n";
      #
      #mknmzでインデックス作成
      $co = "/usr/bin/mknmz ";
      $co .= "--checkpoint ";
      $co .= "-O /home/www/index/$_ ";
      $co .= "/home/www/htdocs/$_";
      system "$co";
      print "$_:Make Index OK!\n";
      #
      #メールデータを削除
      foreach $FL (@DIR) {
        if ($FL !~ m/\.+/) {
          unlink "/home/www/procmail/$_/$FL";
        }
      }
      print "Mail DEL OK!";
      #
      #ディレクトリにメールがないとき
    } else {
      print "/home/www/procmail/$_ No Mail"
    }
}

# あまり美しくないプログラムかも(^_^;)

Follow-Ups
[plamo:09068] Re: Q:通常ログインと、cron起動は何か違う?, Shun-ichi TAHARA (田原 俊一)
[plamo:09069] Re: Q:通常ログインと、cron起動は何か違う?, Namio MATUDA

[検索ページ] [メール一覧]
Plamo ML 公開システム