내 사용자 crontab에 문제가 있습니다.
Crontab은 매분(* * * * *) 실행되도록 예약되지 않은 작업 실행을 거부합니다.
매시간 15분마다 실행되도록 작업을 편집하면 실행이 실패합니다.
매분마다 잘 실행됩니다.
* * * * * touch /tmp/test01
매시 15분에 실행될 수는 없습니다. 그냥 실행되지 않습니다.
15 * * * * touch /tmp/test02
- 원인은 무엇입니까?
- 어떻게 해결하나요?
운영 체제는 RedHat 4입니다.
crontab -e
EDITOR
나는 vi 편집을 위해 항상 cron을 사용하고 설정합니다. 15 * * * *
(분은 변경될 수 있음) 과 사이를 왔다 갔다 했으나 결과 * * * * *
는 같습니다. 별 다섯 개만 좋아합니다.
엄청난 편집:
나는 팔로우한다@셰인-h질문하고 테스트 */2 * * * *
(1분마다)하면 작동합니다! 그러다가 깨달은 사실을 발견했습니다.
이 문자열을 사용하여 테스트를 했습니다.37 * * * * touch /tmp/prueba_777777
놀랍게도 실제로는 실행되지만 파일 날짜를 살펴보십시오.
-rw-r--r-- 1 orashut dba 0 8월 8일 08:07 prueba_777777
최근 서버가 새로운 베네수엘라 시간대로 설정되었으며 현재는 -04:00이지만 예전에는 -04:30이었습니다.
date 명령을 실행하면 올바른 날짜가 표시됩니다. 파일이 생성될 때 FS의 파일 날짜가 정확합니다. 하지만 어떻게든 cron 작업이 30분 일찍 실행됩니다. 이것이 바로 다음 몇 분 동안 작업을 예약할 때 cron 데몬의 시간이 이미 지났기 때문에 작동하지 않는 이유입니다. 거의 한시간 정도 기다리면 30분 안에 실행됩니다. 그렇기 때문에 터치된 파일이 예정된 37분보다 30분 빠른 것입니다.
이제 질문은 다음과 같습니다.
cron 데몬이 이전 시간대를 사용하고 있는 반면 서버의 나머지 부분은 새 시간대를 사용하고 있다는 것은 명백합니다.
새로운 시간대에 대한 cron 데몬의 이해를 수정하는 방법은 무엇입니까?
답변1
이제 질문은 다음과 같습니다.
cron 데몬이 이전 시간대를 사용하고 있는 반면 서버의 나머지 부분은 새 시간대를 사용하고 있다는 것은 명백합니다.
새로운 시간대에 대한 cron 데몬의 이해를 수정하는 방법은 무엇입니까?
내 생각엔 시간대 데이터 업데이트 패키지( tzdata
RPM 등) 가 설치되었으나 crond
업데이트 후 서버가 다시 시작되지 않고 데몬도 다시 시작되지 않아서 crond
초기 시작 시 로드되었던 이전 시간대 데이터가 여전히 남아 있는 것 같습니다. 사용되고 있습니다.
이것이 문제인 경우 Shane H가 언급한 것처럼 데몬을 다시 시작하면 문제가 해결됩니다. service crond restart
아니면 /etc/init.d/crond restart
그렇게 해야 합니다. 또한 타임스탬프를 기록할 수 있는 다른 장기 실행 시스템 데몬을 다시 시작하는 것도 고려해야 합니다 sendmail
.
답변2
구체적인 답변을 드릴 수는 없지만 이 문제를 어떻게 해결합니까?
더 많은 조합을 시도하여 또 다른 효과적인 표현 방법을 찾아보세요. (
*/2 * * * *
매분) 또는* */2 * * *
(매분, 매시간)은 어떻습니까 ? 무엇이든 결정하다비교적표현식은 유효하지만 고정 표현식은 유효하지 않습니다.저장할 때 "새 crontab이 설치되었습니까?"라는 확인 메시지가 표시됩니까?
crontab -l
메시지를 볼 수 있나요 ?사용자 crontab입니까, 아니면 시스템 crontab입니까?
시스템 로그에 메시지가 표시됩니까? 두 번째 cron을 추가하면
* * * * *
매분마다 표시되어야 하며, 매분 변형을 추가하면 syslog에서 더 자주 표시되는 작업을 볼 수 있습니까?작업
at
명령을 구성할 수 있나요?이 점을 이해하신 후에는 제가 구축한 서비스를 사용하는 것이 좋습니다.https://cronitor.io중요한 일에 집중하세요. 개발자는 무료로 작업을 모니터링할 수 있으며 상업적 사용을 위한 유료 요금제가 있습니다. 저는 수년에 걸쳐 크론 디버깅 전문가가 되었으며 중요한 작업을 모니터링하기 위한 솔루션이 필요한 경우 아마도 다른 사람도 똑같이 할 것이라는 것을 알고 있습니다.
댓글에서:
Cron은 동일한 시스템 시간대를 사용하여 작업을 시작하므로 재설정하려고 합니다.
철저한 확인을 위해 시간대를 다시 설정하세요. Red Hat 사용 시
redhat-config-date
cron 데몬을 다시 시작합니다. 귀하의 OS 버전은 다음과 같습니다.
/etc/init.d/crond restart