神秘的自動電子郵件

神秘的自動電子郵件

我記得幾個月前在伺服器上擺弄 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. 如果您指定您使用的作業系統,這確實很有幫助。我猜這是一些 Linux 發行版...
  2. 它正在運行/etc/cron.daily/mlocate並且該腳本出錯,您可能應該修復它。
  3. 我在其中沒有看到任何問題。

答案2

之前的海報完全沒有達到目的!

首先,原貼明確說明了他使用的是哪個作業系統:Ubuntu Server 12.04.1 LTS

其次,它有助於理解UNIX類型系統中的系統級流程。系統級 cron 表被設定為定期運行管理進程。由於 cron 作業沒有連接的終端機來輸出錯誤訊息,因此它們會透過電子郵件傳送給 cron-tab 的使用者-在本例中為系統管理員。

第三,您不應該只是關閉這些訊息的電子郵件發送,或關閉 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 訊息,因為卡住的進程已被刪除,並且 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. go to/var/spool/cron/和 do grep -ir MAILTO,同樣檢查文件MAILTO中的條目/etc/crontab
  4. 如果您不想從 crond 接收訊息,只需刪除 MAILTO 字串
  5. (可能是早期更新的資料庫) <- 如果您今天開始接收訊息,那麼請多給 mlocate 一些時間來完成伺服器上的工作。

相關內容