2014-05-09 6 views
0

젠투 리눅스 시스템과 이상한 crontab의 동작이 있습니다. 나는 문서, 명령젠투 리눅스 시스템에서 crontab 이벤트를 다루는 방법은 무엇입니까?

crontab -l 

목록을 이해 root 사용자로서, 그리고로 현재 사용자에 대해 정의 된 모든 crontab을 작업, root (모든 중고에 대해 정의 된 cronjobs가 없습니다). 나열된 모든 cronjobs는 /etc/cronjob 파일에도 정의되어 있습니다.

crontab -l에 표시되지 않지만
/etc/cron.d/testcron1 
/etc/cron.d/testcron2 

파일 /etc/cron.d/testcron1에 정의 된 cronjob를 실행 :

그러나 cronjob에 각을 정의 /etc/cron.d에있는 두 개 더 crontab 파일이있다. 파일 /etc/cron.d/testcron2에 정의 된 다른 cronjob은 실행되지 않습니다.

이 모두 이해가되지 않습니다, 그래서 두 가지 질문이 있습니다

  • crontab -l 목록 모든 cronjobs합니까?
  • /etc/cron.d의 cronjob을 어딘가에 등록해야합니까? 아니면 데몬/서비스를 다시 시작해야합니까? 왜 그 하나가 시작되었고 다른 하나 (실행 파일은 괜찮습니다.).

답변

1

명령 crontab은 개별 사용자의 crontab 파일을 유지 관리하는 데 사용됩니다. 이 파일은 일반적으로 /var/spool/cron/crontabs에 있습니다.

이 cron 작업을 표시하지 않으면이 사용자는 현재 개별 cron 작업이 없습니다. 이것은/etc/cron *에 cron 작업이 없다는 것을 의미하지는 않습니다.이 사용자의 권한으로 실행됩니다. crontab은/etc/cron *의 파일에서 작동하지 않습니다. /var/spool/cron/crontabs에 보관 된 개인 (사용자 당) 크론 작업 만 관리하기위한 도구입니다.

이제 다양한 cron 작업이 어떻게 실행되는지 볼 수 있습니다. 양식 cron 디먼의 manpage 우리는 읽을 수 있습니다

크론 (/ etc/passwd에 계정의 이름을 따서 명명되는)의 crontab 파일의 스풀 영역을 (/ var/spool/cron/crontabs 디렉토리) 검색; ...

cron도/etc/crontab을 읽습니다.이 형식은 약간 다른 형식입니다 (crontab (5) 참조).

뿐만 아니라 :

또한, 데비안에, 크론은 /etc/cron.d 디렉토리에있는 파일을 읽습니다. 크론은

에 대해 (...이뿐만 아니라 젠투 적용 생각)

.../etc/crontab 파일과 같은 방법으로 /etc/cron.d에있는 파일을 취급 다시 시작하면 다음을 읽을 수 있습니다 :

cron 그런 다음 매 순간마다 깨어나서 모든 저장된 crontab을 검사하여 각 명령이 현재 분에서 실행되어야하는지 확인합니다.

또한 cron은 스풀 디렉토리의 modtime (또는/etc/crontab 파일의 modtime)이 변경되었는지 확인하고, 수정 된 경우 crontab은 모든 crontab 파일의 modtime을 검사하여 해당 파일을 다시로드합니다 그것은 바뀌었다. 따라서 crontab 파일이 수정 될 때마다 cron을 다시 시작할 필요가 없습니다. crontab (1) 명령은 crontab을 변경할 때마다 스풀 디렉터리의 modtime을 업데이트합니다. /etc/cron*의 파일 시스템 cron 작업에 대한 더 많은 반면

는 그래서 crontab 명령은 사용자가 특정 옥수수 작업을위한 것입니다.

새 cron 작업을 활성화하려면 수동 트리거링이 필요하지 않습니다.

+0

정보 주셔서 감사합니다. 그러나 실제로 내 질문에 대답하지 않습니다. 예를 들어,'crontab -l'은 주어진 사용자에 대해 모든 cron 작업을 표시하지 않는 이유는 무엇입니까? '/ etc/cron.d'에있는 cron 작업이 보이지 않는 것 같습니다. 왜 이런거야? 여러분의 정보는'crontab -l'이 그 작업들을 나열해야 함을 의미합니다 ... – Alex

+0

'crontab -e'로 생성 된 (그리고 따라서/var/spool/cron에 기록 된) 그 사용자에 대한 모든 개별 cron 작업을 보여줍니다/crontabs/). 'crontab -l'은/etc/cron *에 cron 작업을 나열하지 않습니다./var/spool/cron/crontabs /에있는 개별 cron 작업을 관리하는 도구입니다. – mofoe

+0

조금 더 명확히하기 위해 내 anwser를 약간 업데이트했습니다. – mofoe