2016년 6월 10일 금요일

[Unix] cron & crontab 설정

cron

  • 일정 시간마다 시스템에서 자동으로 실행시키는 데몬(Windows의 작업스케줄러와 비슷한 기능)
  • 정기적 작업을 할 때 많이 사용
  • cron을 사용할 때 crontab이라는 명령을 이용해서 실행한다. (/etc/crontab)
  • 각각의 사용자가 등록한 crontab은 /var/spool/cron/[사용자명]에 저장된다.

cron 데몬의 시작 & 종료

/etc/rc.d/init.d/crond [start/restart/stop]

crontab

  • 지정된 시간에 다른 프로그램을 실행하면서 연속적으로 실행하는 프로그램
  • 유사한 명령으로는 at 명령어가 있다.

crontab와 at 명령의 차이점

  • crontab 명령은 일정한 간격으로 계속해서 명령을 실행한다. 하지만 at 명령은 지정된 명령을 한번만 수행.

crontab 옵션

-l : 현재 crontab에 의해 설정 된 내용을 출력
-e : crontab의 내용을 작성하거나 수정
-r : crontab의 내용을 삭제
-u : root 권한자가 해당 사용자의 crontab 파일을 다룰때 사용

예) crontab -e -u luffy

crontab의 작업형식

  [분] [시] [일] [달(월)] [요일] [명령어]
  - 분 : 분을 의미 (0 ~ 59까지 사용)
  - 시 : 시를 의미 (0 ~ 23까지 사용)
  - 일 : 날짜를 의미 (1 ~ 31까지 사용)
  - 달(월) : 달(월)을 의미 (1 ~ 12까지 사용)
  - 요일 : 요일을 의미 (0 ~ 7까지 사용, 0과 7은 일요일을 나타냄)
  - 명령어 : 실행 할 명령어
  구분자는 space로 한다.
  위 형식에서 시간을 나타내는 각 필드에서는 와일드 카드 '*'를 사용할 수 있고, 각각의 요일을 구분할 때는 ','를 사용하고 연일 을 나타낼때는 '-'를 사용한다.
  즉, 월요일과 수요일은 '1,3', 월요일부터 금요일까지는 '1-5'로 표시할 수 있다.
  예) 월요일부터 금요일까지 12시에 /tmp/start라는 스크립트를 실행
  0 12 * * 1-5 /tmp/start
  예) 1월부터 10월까지 2개월마다 매일 12시에 /tmp/start라는 스크립트를 실행
  0 12 1 1-10/2 * /tmp/start (/2는 2달마다라는 표시. 만약 5일마다 작업을 수행시키고 싶으면 0 1 /5 * * [명령]
  예) 월, 수, 금 오전 4시에 /tmp/start라는 스크립트를 실행
  0 4 * * 1,3,5 /tmp/start

cron 사용자 제한

  • /etc/cron.allow(허가목록)과 /etc/cron.deny(거부목록)을 참조하게 된다.
  • /etc/cron.allow 만 존재하는 경우 : cron.allow 파일에 등록된 사용자만 사용가능
  • /etc/cron.deny만 존재하는 경우 : 기본적으로 모든 사용자가 사용가능하고 cron.deny에 등록된 사용자만 사용불가
  • 두 파일이 모두 없을 경우 : 모든 사용자가 사용가능
  • 두 파일이 모두 있는 경우 : cron.deny 내용을 무시하고 cron.allow 파일에 등록 된 사용자만 사용가능

댓글 없음:

댓글 쓰기