
저는 Java에서 JCrontab을 사용하여 프로그래밍 방식으로 cron 작업을 초기화하려고 했습니다. 작업의 데이터 소스로 사용한 cron 파일이 있습니다. 내 응용 프로그램이 시작되면 Cron 탭이 시작되어 성공적으로 실행됩니다. 어느 시점에서 애플리케이션의 예상치 못한 오류로 인해 cron 파일이 비어 있다고 가정해 보겠습니다. 그러나 다음 작업 주기 전에 파일은 cron 항목으로 다시 채워집니다. 하지만 프로그래밍 방식으로 crontab을 다시 시작하지는 않겠습니다. 다음 일정에서 작업을 계속할 수 없습니다. cron 파일이 올바른 데이터로 다시 업데이트된 것을 본 후에도 자동으로 초기화되지 않는 이유는 무엇입니까? crontab은 cron 파일 업데이트를 어떻게 처리합니까?
답변1
man cron
:
crontable의 변경 사항을 확인하는 방법에는 두 가지가 있습니다. 첫 번째 방법은 파일의 수정 시간을 확인하는 것입니다. 두 번째 방법은 inotify 지원을 사용하는 것입니다. 데몬이 시작된 후 inotify 사용이 /var/log/cron 로그에 기록됩니다. inotify는 모든 크론테이블의 변경 사항을 확인하고 변경 사항이 감지된 경우에만 하드 드라이브에 액세스하는 것을 지원합니다.
따라서 변경 사항이 무시되는 유일한 이유는 파일의 mtime이 설정되었기 때문인 것 같습니다.