crontab 파일을 편집하는 올바른 방법은 무엇입니까?


52

내 웹 서버에 대한 awstats 새로 고침을 자동화하려고하는데 cron을 사용하여 설정해야한다는 것을 이해하고 있습니다. 각 사용자에게 crontab 파일이 있습니까?

나는 지침에 따라되었다 여기에 커뮤니티 / AWStats를

그리고 그것은 다음 파일에서 파일로 가라고 말합니다. /etc/crontab

그 파일에는 이미 몇 가지 정보가 있습니다. 이것이 메인 crontab파일입니까? 와 함께 나타나는 파일을 사용하기위한 온라인 지침이 있습니다 crontab -e.

사용하기에 적합한 파일은 무엇이며이를 수행하는 가장 좋은 방법은 무엇입니까?

루트가 아닌 사용자로 작업을 예약하면 지정된 시간 간격으로 문제없이 실행됩니까?

cron 작업을 crontab파일 에 저장 한 후 서버를 다시 시작해야 작동합니까?

답변:


50

사용하기에 적합한 파일은 무엇이며이를 수행하는 가장 좋은 방법은 무엇입니까?

crontab -e 가장 좋은 방법입니다. 이렇게하면 사용자 별 crontab을 쉽게 편집 할 수 있습니다.

루트가 아닌 사용자로 작업을 예약하면 지정된 시간 간격으로 문제없이 실행됩니까?

예, 해당 사용자 계정의 권한으로 실행됩니다.

원칙적으로 가장 낮은 권한으로 예약 된 작업을 실행하는 것이 가장 좋습니다. 따라서 수행중인 작업에 루트가 필요하지 않은 경우 루트를 사용하지 마십시오. 당신도 액세스 할 수 필요가없는 경우 귀하의 계정의 파일과 폴더를, 당신은 새 사용자를 만들고 해당 사용자 계정을 사용할 수 있습니다 그 작업. 반면, 작업에 루트 필요한 경우 루트의 crontab 을 사용하십시오 ( su/ sudo suto root를 사용하고 crontab -e).

cron 작업을 시작하기 전에 crontab 파일에 cron 작업을 저장 한 후 서버를 다시 시작해야합니까?

아니요, 곧바로 작동하기 시작합니다 (다음 예정된 시간).

왜 파일을 직접 편집하지 않습니까? 어디에 있습니까?

사용자 crontab 파일은에 /var/spool/cron/crontabs있지만 권한은 수퍼 유저 권한 없이는 통과 할 수없는 방식으로 설정됩니다 (하지만 일단 열면 cron 프로세스는 권한을 삭제하여 파일에 액세스 할 수 있음).

이 시스템은 최종 사용자가 이러한 파일을 직접 편집 할 수 있도록 설계되지 않았으며 실제로 파일 DO NOT EDIT THIS FILE상단에는이 효과의 상단에 엄격한 경고가 표시됩니다. 그 대신 파일은 편집을 crontab -e위해 파일의 임시 미러를 설정하여 편집하도록 설계되어 있으며 , 그 후 파일 /tmp은 엄격한 크론 탭없이 영구적 인 crontab 파일 자체를 확인하고 설치합니다. 이 작업은 모두 수퍼 유저 권한없이 수행 할 수 있습니다.

crontab 파일을 직접 편집하면 결과가 무엇인지 알 수 없습니다. 다음에 다시 시작할 때까지 적용되지 않으며 오류를 디버깅하기 어려울 수 있습니다.


5
crontab -esudo없이 사용자 crontab을 편집 할 수 있습니다. 사용자 crontab은 /var/spool/cron/crontabs수퍼 유저 권한 없이는 액세스 할 수없는 디렉토리입니다. 그러나 일단 cron이 특권을 삭제하면 여전히 읽을 수 있습니다. sudo를 사용하여 파일을 직접 편집하고 편집하더라도 맨 위에 "이 파일을 편집하지 마십시오"라는 큰 경고가 표시됩니다. 파일은 crontab임시 사본을 사용한 /tmp다음 설치 하는 명령을 사용 하여 편집하도록 설계되었습니다. 당신이 저장 한 후.
thomasrutter

25

모든 사용자는 자신의 소유 crontab입니다.

그것을 보려면 그냥 입력하십시오

crontab -l

그리고 네, 당신은 그것을 추가하고 싶을 때 crontab간단히 그것을 보았습니다.

crontab -e

와 함께 사용할 편집기에 대한 질문이 처음으로 표시됩니다 crontab. 당신이 말하는대로 초보자이므로 nano를 사용하는 것이 좋습니다. 이것은 사용하기 가장 간단한 편집기입니다.

crontab 자체는 다음과 같이 작동합니다

MIN =  Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW =  Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line

예를 들어 월요일에만 15 분마다 작업을 시작하려면 다음과 같이하십시오.

*/15 * * * mon /home/me/yourscript.sh

그렇습니다. cronjob을 실행하기에 충분한 권한이있는 사용자의 crontab에 cronjob을 두는 것이 매우 중요합니다.

따라서 스크립트가 루트 또는 특수 사용자 여야하는 경우 해당 사용자에게 su를 제공하고 cronjob을 추가하십시오.

또한 매우 중요합니다!

cronjob은 바보입니다! 그렇습니다. application/command/scriptcrontab은 작동하지 .bashrc않거나 유사한 방식으로 작동하지 않으므로 항상 사용중인 전체 경로를 입력하십시오 . 항상 cron에게 파일과 디렉토리를 찾을 수있는 곳을 알려 주어야합니다.

나머지 질문에 대답하려면 :

물론 그것은 자체적으로 실행될 것입니다. 그것이 거기에 있습니다. 그러나 cronjob이 실제로 수행하는지 또는 누락 된 것이 있는지 확인해야합니다. 예를 들어 로그 파일에 로그인하여 실제로 작동하는지 확인하십시오.

그리고 아니요, 다시 시작할 필요가 없습니다. 새 커널을 설치하는 경우 일반적으로 Linux로 다시 시작하면됩니다. 사용하려면 재부팅해야합니다. Linux에서 재부팅하지 않고도 거의 모든 것을 수행 할 수 있습니다. 물론 예외가 있지만 일반적으로이 진술은 정확합니다.


당신에게이 사이트의 시간 형식의 리뷰를 확인 crontab.guru
ASTM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.