
몇 달 전에 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
(루트와 일반 사용자 모두에 대해) 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-tab의 사용자(이 경우 시스템 관리자)에게 이메일로 전송됩니다.
셋째, 이러한 메시지의 이메일 전송을 끄거나 크론 작업 처리를 꺼서는 안 됩니다. 이는 문제가 있음을 나타내는 것이므로 근본 원인을 해결해야 합니다.
이 특정 메시지의 경우, 나 역시 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
가장 간단한 해결책은 관련된 프로세스를 종료하고 다음 크론 예약 시간에 나중에 다시 실행하도록 하는 것입니다.
$ 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
- mlocate에 문제가 있습니다.
- 메시지는 server-ip 서버에서 직접 전송됩니다.
- 가서 파일 의 항목 에 대해 동일한 검사를
/var/spool/cron/
수행하십시오 .grep -ir MAILTO
MAILTO
/etc/crontab
- crond로부터 메시지를 받고 싶지 않다면 간단히 MAILTO 문자열을 제거하세요.
- (아마도 이전 업데이트에 의해) <- 오늘 메시지를 받기 시작했다면 mlocate에게 서버 작업을 완료할 시간을 좀 더 주세요.