cron 데몬이 계속 실행되고 있는지 확인하세요.

cron 데몬이 계속 실행되고 있는지 확인하세요.

만약에데비안 7호스팅된 VM과 최신 cron데몬에서 실행 중인 서버(wheezy)에는 버그가 있어서 cron이 명백한 이유 없이 실행을 중지했습니다. 이 문제는 그 이후로 한 번만 발생했기 때문에 디버그하기가 어렵습니다.

cron이 다시 충돌하고 이메일 경고를 보내는 경우 자동으로 다시 시작되도록 하려면 어떻게 해야 합니까?

답변1

언제든지 확인해 보실 수 있습니다모니터프로젝트.
서비스를 다시 시작하고 계속 유지할 수 있습니다.
의견이 제안한 대로 cron을 수정할 수 있는 방법이 없는 경우.

답변2

프로세스를 모니터링하고 다시 시작하기 위해 daemontools와 같은 것을 실행할 수 없습니까?

네 확실합니다; 일부 컴퓨터에서는 정확히 그렇게 합니다. "daemontools와 같은 것"은 실제로노쉬 패키지그러나 daemontools 계열의 다른 구성원은 GNU cron을 감독할 수 있는 능력이 충분합니다. (Vixie cron은 또 다른 문제인데 데비안이라고 말씀하셨어요.)

GNU cron은 daemontools 제품군 서비스 관리에서 실행되는 가장 간단한 서비스 중 하나입니다. Nosh 도구 세트와 함께 제공되는 서비스 번들 컬렉션과 마찬가지로 Gerrit Pape의 실행 스크립트 컬렉션에도 이 기능이 있습니다.

즉, GNU 크론을 다시 시작해야 했던 기억이 없습니다.추락했기 때문에.

손에 쥐고 있는 서비스 관리는 단지 자동 재시작에 관한 것이 아닙니다. 그것은또한로깅 및 리소스 제어에 대해 설명합니다. 둘 다 작업과 관련이 있습니다.이유를 진단하다GNU 크론이 충돌합니다.

문제 진단에는 다음과 같은 사항이 포함됩니다.

  • 코어 덤프를 활성화하는 데 run사용할 프로그램을 편집합니다 .softlimit
  • 스크립트(또는 이에 상응하는 항목) 편집 restart
    • ... 데몬이 신호로 종료되었는지 또는 종료되었는지 확인합니다.
    • … 코어 덤프를 수집합니다.
    • … 경고를 발생시키고 알림을 메일로 보냅니다. (한 번은 충돌/중단 시 restart마지막 몇 줄을 나에게 메일로 보내도록 스크립트를 설정한 적이 있습니다 .)log/main/current
    • ... 재시작 속도 제한을 조정합니다.
  • GNU cron의 개별 로그와 서비스 관리자의 자체 로그를 읽어 데몬이 언제, 얼마나 자주 다시 시작되었는지, 어떤 오류 메시지가 출력되었는지 확인합니다.

추가 읽기

답변3

crond를 통해 모니터링할 수 없기 때문에 crond다음과 같이 만들겠습니다.
echo "while true; do if ! (ps aux |grep crond |grep -v grep); then /etc/init.d/crond start; fi && sleep 5; done &" >> /etc/rc.local

답변4

daemontools, runit, 등을 설치할 필요가 없습니다 supervise. 이러한 도구는 유용하지만 일반적으로 cron에만 필요하지 않은 사용 사례를 다룹니다. 단순히 필요한 것은 init를 사용하여 쉽게 처리할 수 있습니다. /etc/inittab에 추가:

cron:2345:respawn:/usr/sbin/crond -n

crond먼저 옵션 을 지원하는지 확인하세요 -n. 이는 분기하지 않고 포그라운드에 남아 있도록 지시합니다. ** rc 스크립트에서 crond를 비활성화해야 합니다 **.

/usr/lib/lsb/remove_initd /etc/init.d/crond

어떤 이유로 crond 출력이 stdout 또는 stderr로 출력되는 경우 해당 출력을 처리하고 래퍼 스크립트를 생성하는 래퍼 스크립트를 작성해야 합니다. 해당 스크립트를 간단하게 유지하세요.

#!/bin/sh
#crond-wrapper.sh 
exec crond -n &>>/var/log/crond

또는 while 루프 내에서 init.d/crond호출되는 스크립트로 기존 패키지 스크립트를 수정할 수 있습니다 . 그러나 이 경우 나중에 이 스크립트에서 사용할 수 있도록 crond -n저장하는 것에 대해 영리해야 합니다 .pid

관련 정보