별의 공부 블로그 🧑🏻‍💻
728x90
728x170

crontab

  • 사용자가 주기적인 작업을 등록하기 위해 사용하는 명령
  • 실행하면 기본 편집기 vi가 실행됨.
  • 설정된 작업은 /var/spool/cron/사용자아이디 파일로 저장됨.
    • 예) 아이디가 starykss일 경우
      • /var/spool/cron/starrykss 이라는 파일이 생성되면서 관련 정보가 저장됨.

 

cron

  • cron 을 이용하여 주기적으로 실행하는 작업
    • 시스템 운영에 필요한 작업
      • root 권한으로 /etc/crontab에 등록해서 주기적으로 수행 가능
    • 사용자의 필요에 의한 작업
      • crontab 이라는 명령을 수행해서 등록할 수 있음.
  • crontab 파일은 총 7개의 필드로 구성됨.
    • 각 필드는 *, -, ,, / 를 사용할 수 있음.
      • * : 모든(all)
      • - : 연결된 설정 값을 지정할 때 사용
      • , : 연결되지 않는 값을 나열할 때 사용
      • / : 연결된 값 범위에서 특정 주기로 나눌 때 사용
    • 필드 종류
      • minute
        • 분(minute)
        • 0~59로 설정
      • hour
        • 시(hour)
        • 0~23으로 설정
      • day_of_month
        • 날(day of month)
        • 1~31로 설정
      • month
        • 월(month)
        • 1~12로 설정
      • day_of_week
        • 요일(day of week)
        • 0~7로 설정
          • 0, 7 : 일요일
          • 1 : 월요일
          • 2 : 화요일
          • 3 : 수요일
          • 4 : 목요일
          • 5 : 금요일
          • 6 : 토요일
        • 직접 sun, mon, tue, wed, thu, fri, sat 이라고 입력해도 됨.
      • user-name
        • 사용자 이름
        • 일반적으로 생략해서 사용
      • command
        • 실행할 명령어
        • 명령어 앞에 사용자 이름을 명시해도 됨.

 

 

(참고) cron 사용자 제한

더보기
  • 다음의 파일로 cron 사용자를 제한할 수 있음.
    • /etc/cron.allow
    • /etc/cron.deny
  • /etc/cron.allow 파일이 존재하는 경우
    • /etc/cron.deny 파일의 존재 유무에 상관없이 /etc/cron.allow 파일에 등록된 사용자만 사용이 가능함.
  • /etc/cron.allow 파일이 존재하지 않고, /etc/cron.deny 파일만 존재하는 경우
    • /etc/cron.deny 파일에 등록된 사용자만이 사용이 불가능함.
  • /etc/cron.allow  /etc/cron.deny 파일이 모두 존재하지 않는 경우 (CentOS 7 기준)
    • 일반 사용자는 사용 불가능
    • root만 사용 가능

 

 

사용법

crontab [option] 파일명

 

주요 옵션

옵션 설명
-l crontab에 설정된 내용 출력
-e crontab에 내용을 작성하거나 수정(Edit)
-r crontab의 내용을 삭제(Remove)
-u root 사용자가 특정 사용자(User)의 crontab 파일을 다룰 때 사용
-i - -r 옵션으로 crontab 설정 파일을 삭제하기 전에 질의를 진행함.
- y 또는 Y를 입력하는 경우에만 실행되도록 지정함.

 

사용 예

예 1
  • 설정된 crontab의 내용 출력
$ crontab -l

 

예 2
  • crontab의 내용을 작성하거나 수정
$ crontab -e

 

예 3
  • 설정된 crontab의 내용 삭제
$ crontab -r

 

예 4
  • starrykss 사용자의 crontab 내용을 작성하거나 수정
$ crontab -e -u starryks

 

예 5
  • 저장된 crontab 설정 파일을 삭제하기 전에 질의(y or Y)를 진행함.
$ crontab -ir

 

예 6
  • schedule.txt 파일에 설정된 내용을 불러와서 등록함.
$ crontab schedule.txt

 

설정 예

minute   hour    day_of_month   month     day_of_week    username      command
  분      시          일           월         요일        사용자이름       명령

* : all
- : 연결된 설정 값을 지정할 때 사용 (예: 1-5)
, : 연결되지 않은 값을 나열할 때 사용
/ : 특정 주기로 나눌 때 사용 (예: 1-12/2)

 

예제 1

  • 월요일부터 금요일까지 오후 12시에 /home/starrykss/work.sh 라는 스크립트 실행
0 12 * * 1-5 /home/starrykss/work.sh

 

예제 2

  • 1월부터 12월까지 2개월마다 1일날 오전 4시 10분에 /etc/check.sh 라는 스크립트 실행
10 4 1 1-12/2 * /etc/check.sh

 

예제 3

  • 월요일 오전 10시에 `Notice`라는 제목으로 /root/notice라는 파일의 내용을 지정한 메일 주소인 `starrykss@naver.com`으로 발송
0 10 * * 1 cat /root/notice | mail -s "Notice" starrykss@naver.com

 

예제 4

  • 월, 수, 금요일 오전 4시에 .bak로 끝나는 파일을 찾아 삭제
0 4 * * 1,3,5 find / -name '*.bak' -exec rm -rf {} \;

 

예제 5

  • /etc/heartbeat.sh를 10분 주기로 실행함.
    • 0-59/10 * * * * /etc/heartbeat.sh와 동일함.
*/10 * * * * /etc/heartbeat.sh

 

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️


📖 Contents 📖