특별한 cron 작업을 만드는 방법은 무엇입니까?

특별한 cron 작업을 만드는 방법은 무엇입니까?

Unix 서버에서 40분마다 Java 프로그램을 실행하려면 cron 작업을 만들어야 합니다. 다음 사항을 고려하세요. 1) 월요일부터 금요일까지 오전 8시 30분부터 12시 30분까지, 14시부터 18시까지 운영되어야 합니다. 2) 휴일을 고려하세요.

나는 그것에 대해 많이 읽었으며 이것이 */30 8..13,14..19 * * 1..5 가장 가까운 솔루션이라는 것을 알았습니다. crontab이 내가 원하는 것을 할 수 있는지 알고 싶습니다. 그렇지 않다면 휴일 날짜를 확인하기 위해 Java 또는 기타 코드를 바로잡는 것이 가능합니다. 당신의 도움을 주셔서 감사합니다

답변1

CRON은 그다지 영리하지 않습니다. 유사한 규칙을 많이 갖거나 이를 수행하기 위해 좀 더 맞춤화된 것을 작성해야 합니다(그러나 조심하십시오. 사용자가 제공한 항목을 다음과 같이 실행하는 스크립트를 작성하고 싶지는 않습니다). 특별한 주의를 기울이지 않고 루트를 삭제하세요. 완전히 멈추는 스크립트를 작성하고 싶지는 않을 것입니다.

답변2

James가 말했듯이 cron은 그다지 똑똑하지 않습니다. "내가 그만하라고 말할 때까지 이 시간에 이런 일을 반복해서 수행"하는 데는 능숙하지만 떠다니는 휴일을 따르거나 "펑키"에 열광하지는 않습니다. ( 이와 every 40 minutes같은 작업을 수행하려면 많은 crontab 항목이 필요합니다. 각 실행마다 하나씩 만들어야 합니다.)

cron을 사용하여 "가능한 한 가깝게" 접근하는 것이 가장 좋습니다(즉, 위의 규칙은 1부의 제한 사항 내에서 "HH:30 표시에서 30분마다 실행"입니다). 그런 다음 스크립트에서 예외(휴일)를 자체적으로 처리하고 진행해야 할지 여부를 결정합니다.

답변3

원하는 것에 비해 과잉일 수 있지만 Hudson을 사용하여 작업을 실행할 수 있습니다. 그 자체로는 타이밍 규칙을 사용하여 작업을 즉시 실행할 수는 없지만 다양한 방법으로 원격으로 작업을 트리거할 수 있습니다. 따라서 웹 페이지의 콘텐츠를 변경하거나 새 파일을 생성하는 스크립트를 작성하거나 Hudson에 대한 REST 호출을 수행하거나 작업 실행을 원할 때마다 git 체크인을 수행할 수 있다면 운이 좋을 것입니다. 또한 cron만 사용하는 것보다 더 나은 로깅을 얻을 수 있으며 작업이 실패할 때마다 알림을 받는 것이 쉽습니다(이메일, jabber, irc, nabaztag...).

이를 또 다른 관점에서 봅니다. 지정된 규칙 내에서 실행하려면 정말로 필요합니까? 대신 30분마다 실행하면 어떻게 되나요? 원하지 않는 시간에 실행하면 어떻게 되나요?

관련 정보