謎の自動メール

謎の自動メール

数か月前に crontab をいじってサーバーに電子メール機能を設定したのを覚えていますが、突然次の電子メールが届きました。

メールヘッダー:

from:    root <[email protected]>
to:  root
date:    Thu, Dec 5, 2013 at 6:48 AM
subject:     Cron <root@server-ip> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
mailed-by:   gmail.com

メール本文:

/etc/cron.daily/mlocate:
/usr/bin/updatedb.mlocate: `/var/lib/mlocate/mlocate.db' is locked (probably by an earlier updatedb)
run-parts: /etc/cron.daily/mlocate exited with return code 1

これは Ubuntu Server 12.04.1 LTS 上にあります。どのメール サーバーを使用しているのか、またその確認方法さえわかりません。/etc/cron.dailyディレクトリに関する私の理解が間違っているに違いありません。確認するとcrontab -l(root と通常のユーザーの両方で)、crontab がないと表示されます。

updatedbおそらく、電子メールや cron ではなく、に問題があるのでしょうか?

/bin/bash /etc/cron.daily/mlocate編集:プロセスを強制終了し/usr/bin/updatedb.mlocate、ロックを解除しました。エラーが再度発生するかどうか確認するまで待つ必要があります。

答え1

  1. 使用している OS を指定していただけると非常に助かります。これは Linux ディストリビューションだと思いますが...
  2. 実行中です/etc/cron.daily/mlocateが、スクリプトにエラーが発生しています。おそらく修正する必要があります。
  3. そこには質問がどこにも見当たりません。

答え2

以前のポスターは完全に的外れでした!

まず、元の投稿者は自分が使用しているOSがUbuntu Server 12.04.1 LTSであることを明記しています。

第二に、UNIX タイプのシステムにおけるシステム レベルのプロセスを理解するのに役立ちます。システム レベルの cron テーブルは、定期的にスケジュールされた時間にハウスキーピング プロセスを実行するように設定されています。cron ジョブにはエラー メッセージを出力する接続された端末がないため、エラー メッセージは cron タブのユーザー (この場合はシステム管理者) に電子メールで送信されます。

3 番目に、これらのメッセージのメール送信や cron ジョブの処理を単にオフにしないでください。これらは問題があることを示しているため、根本的な原因に対処する必要があります。

この特定のメッセージの場合、私も mlocate を含む通常のアップグレードを実行した後にこのメッセージを受け取り始めました。プロセスが停止し、I/O 操作の完了を待つことができなくなりました。プロセス テーブルを見てみましょう。

$ ps -ef |grep mlocate
scott    14564 14416  0 19:49 pts/0    00:00:00 grep mlocate
root     16326 16113  0 Apr06 ?        00:00:00 /bin/bash /etc/cron.daily/mlocate
root     16332 16326  0 Apr06 ?        00:00:00 /usr/bin/updatedb.mlocate

最も簡単な解決策は、関係するプロセスを強制終了し、次回の cron スケジュールされた時間に再度実行することです。

$ sudo kill -9 16326 16332

スタックしたプロセスが削除され、cron がそれをエラーとして認識するため、1 つの新しい cron メッセージが生成されることに注意してください。

From: root@XXXXXXX (Cron Daemon)
To: root@XXXXXXX
Subject: Cron <root@XXXXXXX> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
Date: Sun, 08 Apr 2014 19:54:36 -0400 (EDT)

run-parts: /etc/cron.daily/mlocate exited because of uncaught signal 9

これは問題が解決したことを示しており、次のインスタンスは正常に動作するはずです。

答え3

  1. mlocate の問題。
  2. メッセージは server-ip サーバーから直接送信されます。
  3. に移動して/var/spool/cron/を実行し、ファイル内のエントリgrep -ir MAILTOに対して同じチェックを実行します。MAILTO/etc/crontab
  4. crondからメッセージを受信したくない場合は、MAILTO文字列を削除するだけです
  5. (おそらく以前の更新DBによる) <- 今日からメッセージを受信し始めた場合は、mlocate がサーバー上で作業を完了するまでもう少し時間を与えてください。

関連情報