
数か月前に 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
- 使用している OS を指定していただけると非常に助かります。これは Linux ディストリビューションだと思いますが...
- 実行中です
/etc/cron.daily/mlocate
が、スクリプトにエラーが発生しています。おそらく修正する必要があります。 - そこには質問がどこにも見当たりません。
答え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
- mlocate の問題。
- メッセージは server-ip サーバーから直接送信されます。
- に移動して
/var/spool/cron/
を実行し、ファイル内のエントリgrep -ir MAILTO
に対して同じチェックを実行します。MAILTO
/etc/crontab
- crondからメッセージを受信したくない場合は、MAILTO文字列を削除するだけです
- (おそらく以前の更新DBによる) <- 今日からメッセージを受信し始めた場合は、mlocate がサーバー上で作業を完了するまでもう少し時間を与えてください。