[Linux]crontab 명령어로 반복적인 작업을 예약할 수 있다

crontab 명령어는 리눅스와 유닉스 시스템에서 주기적인 작업을 자동으로 수행하기 위해 사용됩니다. 이 명령어는 각 사용자에 대한 작업 예약을 관리하는 데 사용됩니다. Linux 서버 취약점 분석/조치법 중 “cron 파일 소유자 및 권한 설정”을 참고하시기 바랍니다.


  1. /etc/cron.allow와 /etc/cron.deny 파일의 사용법
    • cron.deny파일보다 cron.allow 파일이 우선합니다.
    • cron.allow파일이 없다면 cron.deny에 등록된 사용자를 제외하고 모든 사용자가 at 명령어를 사용할 수 있습니다.
    • cron.deny이 빈 파일이라면 모든 사용자는 at 명령어를 사용할 수 있습니다.
    • 두 파일이 모두 없다면 root 사용자만 crontab 명령어를 사용할 수 있습니다.
       
  2. crontab 사용법
    crontab -e: 현재 사용자의 cron 편집기를 엽니다.
    crontab -l: 현재 사용자의 cron 작업 목록을 표시합니다.
    crontab -r: 현재 사용자의 cron 작업을 모두 제거합니다.
    crontab -e -u <사용자명>: 지정된 사용자의 cron 편집기를 엽니다.
    crontab -l -u <사용자명>: 지정된 사용자의 cron 작업 목록을 표시합니다.
    crontab -r -u <사용자명>: 지정된 사용자의 cron 작업을 모두 제거합니다.
    crontab [-u user] /path/to/file_name: 지정된 파일에 설정된 내용을 crontab에 반영합니다.
    
  3. crontab의 날짜 지정 형식 및 예제
    • 분 시 일 월 주 명령어줄
      # Example of job definition:
      # .---------------- minute (0 - 59)
      # |  .------------- hour (0 - 23)
      # |  |  .---------- day of month (1 - 31)
      # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
      # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
      # |  |  |  |  |
      # *  *  *  *  * <command to be executed>
      
    • 10분 주기로 실행되는 스크립트 등록
      */10 * * * * /path/to/script_file
      
    • 2개월마다 실행되는 스크립트 등록
      0 0 1 1-12/2 * /path/to/script_file
      
    • 평일 매일 12시에 실행되는 쉘 명령줄 등록
      0 0 12 * 1-5 echo "This message is written by crontab" >> /var/log/cron
      
    • 매년 1월 1일 0시 0분에 새해 인사 메일 발송
      0 0 1 1 * mail -s "Happy New Year" -r your@email.com recipient1@email.com recipient2@email.com < ~/greeting.txt
      
    • 매월 마지막 일자의 새벽 1시에 실행되는 스크립트 등록
      0 1 L * * /path/to/script_file
      
    • 매월 마지막 금요일의 0시 0분에 실행되는 스크립트 등록
      0 0 * * 5L /path/to/script_file
      
    • 매월 첫번째 월요일의 12시에 실행되는 스크립트 등록
      0 12 1-7 * * [ "$(date '+\%u')" = "1" ] && /path/to/script_file
      

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다