cron의 구현이 다르기 때문에 약간 혼란스러운 주제 일 수 있습니다. 또한이 기능을 손상시킨 몇 가지 버그가 있었고 특히 종료 / 부팅 대 재부팅을 수행하는 경우 작동하지 않는 사용 사례도 있습니다.
버그
데이터 포인트 # 1
cron : @reboot jobs is not run 이라는 제목의 데비안 버그가 여기에 포함되어 있습니다 . 이것은 우분투에도 들어간 것으로 보이며 직접 확인할 수는 없습니다.
데이터 포인트 # 2
우분투에서 버그에 대한 증거는이 SO Q & A에서 @reboot cronjob not running 이라는 제목으로 확인 된 것으로 보입니다 .
발췌
comment # 1 : .... 3) 귀하의 crond 버전이 @reboot를 지원하지 않을 수 있습니다 vix의 crond를 사용하고 있습니까? ... crontab -l -u 사용자의 결과 표시
comment # 2 : ... cron의 @reboot의 특정 버전에 의존하는 대신 init 스크립트로 설정하는 것이 좋습니다.
주석 # 3 : ... @MarkRoberts가 재부팅을 제거하고 1 * * * *를 * / 1 * * * *로 수정하면 문제가 해결됩니다! 담당자 마크를 어디로 보내나요? 감사합니다!
해당 Q & A에서 허용 된 답변에도 다음과 같은 의견이있었습니다.
Lubuntu는 @Reboot Cron 구문을 지원하지 않습니다.
추가 증거
데이터 포인트 # 3
추가 증거로 누군가가 똑같은 것을 시도하고 그것이 작동하지 않는다는 좌절감을 느꼈다는이 실이있었습니다. 제목 것 : 스레드 : 크론 - @reboot 작업이 작동하지 않습니다 .
발췌
다시 : Cron-@reboot 작업이 작동하지 않습니다
ceelred 썼습니다 : 게시물이 날 죽이고있다 ... 래퍼 스크립트를 시도했다. 수동으로 실행하면 로그 파일이 생성됩니다. 재부팅 중이며 작업이 실행되지 않거나 로그 파일이 생성되지 않습니다.
Syslog는 CRON이 작업을 실행했음을 보여 주지만 다시는 출력이없고 프로세스가 실행되고 있지 않습니다. Jul 15 20:07:45 RavenWing cron [1026] : (CRON) INFO (@reboot 작업 실행) Jul 15 20:07:45 RavenWing CRON [1053] : (청소) CMD (/ home / ceallred / Scripts / run_spideroak. sh> /home/ceallred/Scripts/SpiderOak.log 2> & 1 &)
cron이 @reboot 명령을 좋아하지 않는 것 같습니다. 다른 아이디어가 있습니까?
알았어 ... 부분적으로 해결 됐어 이 문제를 해결 된 것으로 표시하고 새 문제로 새 스레드를 시작하겠습니다 .....
CRON이 스크립트를 실행하려고 할 때 (/ home / username / scripts에 저장된) 암호화 된 홈 디렉토리가 마운트되지 않은 것 같습니다. / usr / scripts로 이동했으며 작업이 예상대로 실행됩니다.
그래서 이제 그것은 스파이더 오크 문제 인 것처럼 보입니다. 프로세스가 시작되지만 부팅 프로세스가 완료 될 때까지 사라졌습니다. 나는 어떤 이유로 추락을 추측하고 있습니다 ... 그것에 대해 물어볼 새로운 스레드.
모든 도움을 주셔서 감사합니다!
위의 사용자가 자신의 문제를 파악한 후에 @reboot
는 사용자의 crontab 항목에서 작업 할 수있었습니다 .
우분투에서 어떤 버전의 크론이 사용되는지는 확실하지 않지만 사용자가 사용할 수 @reboot
있거나 후속 버전의 크론에서 버그가 수정 되었음을 나타냅니다 .
데이터 포인트 # 4
CentOS 6에서 다음을 테스트했으며 작동했습니다.
예
$ crontab -l
@reboot echo "hi" > /home/sam/reboot.txt 2>&1
그런 다음 시스템을 재부팅했습니다.
$ sudo reboot
재부팅 후.
$ cat reboot.txt
hi
핵심, 관심사
- 이 기능은 시스템 및 사용자 crontab 항목 모두에서 지원되는 것 같습니다.
- 특정 배포판 및 / 또는 cron 패키지 버전에서 지원 / 작동하는지 확인해야합니다.
실제 메커니즘의 작동 방식에 대한 자세한 내용 @reboot
은 내부를 설명하는이 블로그 게시물을 참조하십시오. 제목은 @reboot-간단한 cron 마술을 설명합니다 .
크론 디버깅
crond
RHEL / CentOS / Fedora 기반 배포판의이 구성 파일에 다음을 추가 하여 자세한 정보를 표시 할 수 있습니다 .
$ more crond
# Settings for the CRON daemon.
# CRONDARGS= : any extra command-line startup arguments for crond
CRONDARGS="-L 2"
유효한 수준은 0, 1 또는 2입니다.이 파일을 기본 로깅 수준으로 되돌리려 "-L 2"
면 상황 디버깅이 완료된 후를 제거하면 됩니다.