본문 바로가기
공부/정보보안기사

<정보보안기사> 1. 시스템 이론 - 작업 스케줄 관리(cron, crontab 명령어)

by Richard_Hoon 2024. 11. 20.
반응형

목차

     

     

    cron 서비스 개요

     

     - cron 서비스는 리눅스 시스템에서 특정 시간이나 주기에 맞춰 자동으로 명령어 또는 스크립트를 실행하는 서비스.

     - 반복적인 작업을 자동화하여 시스템 관리를 효율적으로 만들어줌

     

     

    cron의 구성 요소

     

    `crontab` : cron 작업을 설정하는 파일. 사용자별로 crontab 파일을 생성하여 관리

    `crond` : cron 서비스를 데몬 형태로 실행하는 프로그램. 시스템 부팅 시 자동으로 시작되어 crontab 파일을 읽고 설정된 작업을 실행

     

     

    root의 cron 작업 파일

     

     - 경로 : `/etc/crontab`

     - `root`가 모든 사용자의 cron 작업 등록을 위해 사용하는 파일

     - `-perm 640` 이하 권한 설정 권장

     

     

     

    일반 사용자 별 crontab 작업 파일

     

     - 경로 : `/var/spool/cron/<사용자 계정명>`

     - 각 사용자는 `crontab` 명령을 통해 자기자신의 cron 작업을 등록할 수 있음

     - 작업을 등록하면 `/var/spool/cron` 디렉터리에 `사용자 계정명` 에 해당 정기작업이 저장된다

     

     

     

    /etc/crontab 파일 설명 (root 사용자만 가능)

     

    `0 9 1-7 * 1 root /path/to/script.sh`

     

    0 9 1-7 * 1 root /path/to/script.sh
    `1` 분 `2` 시 `3` 일 `4` 월 `5` 요일 `6` 계정명 `7` 작업 내용
    0분 9시 매일 매 월 월요일 root 계정 해당 경로의 스크립트 실행

     

     



    /etc/crontab 파일 예시 설명

     

    `*/5 * * * * root /usr/local/bin/backup.sh`

     

    - 매 5분간격마다 root 사용자로 백업 스크립트 실행

     

     

    `0 0 1,2 * * user1 rm /van/log/myapp.log`

     

    - 매월 첫째 날, 둘째 날 0시에 user1 사용자로 로그 파일 삭제

     

     

    `0 17-19 * * 1 user2 /usr/local/bin/check_system.sh`

     

    - 매주 월요일 오후 5시, 오후6시, 오후7시 정각에 user2 사용자로 시스템 상태 확인하는 스크립트 실행

     

     

     

    crontab 명령 문법 (일반 사용자)

     

    `5` 요일 : 요일은 0-6사이로 작성 / 0 = 일요일, 1 = 월요일, 2 = 화요일 등등

    `7` 작업 내용 : 실행할 작업은 `무조건 절대 경로`로 작성, 필요 시 옵션과 인수를 모두 작성

     

    `*` 기호 : 각 필드에 해당하는 모든 값을 의미

    `-` 기호 : 범위 값을 지정할 때 사용

    `,` 기호 : 값을 구분하여 지정할 때 사용

    `/` 기호 : 간격값을 지정할 때 사용

     

     

     

    crontab 명령 문법 (일반 사용자)

     

    `5` 요일 : 요일은 0-6사이로 작성 / 0 = 일요일, 1 = 월요일, 2 = 화요일 등등

     

    문법 리눅스 : `crontab [-u 유저명] [ -e | -l | -r ]
    유닉스 : `crontab [ -e | -l | -r ] [유저명]
    옵션 `-e`  crontab 파일을 편집
    `-l`  사용자의 crontab 파일을 출력
    `-r`  사용자의 crontab 파일을 삭제

     

     

     

    crontab 문법 설명

     

    리눅스 `crontab -u user1 -e`   user1 계정의 작업 등록 파일(crontab)을 편집
    `crontab -u user1 -l`   user1 계정의 작업 등록 파일(crontab)을 출력
    `crontab -u user1 -r`   user1 계정의 작업 등록 파일(crontab)을 삭제
    유닉스/솔라리스 `crontab -e user1`   user1 계정의 작업 등록 파일(crontab)을 편집
    `crontab -l user1`   user1 계정의 작업 등록 파일(crontab)을 출력
    `crontab -r user1`   user1 계정의 작업 등록 파일(crontab)을 삭제
    - `crontab -e`   자신의 작업 등록 파일(crontab)을 편집
    `crontab -l`   자신의 작업 등록 파일(crontab)을 출력
    `crontab -r`   자신의 작업 등록 파일(crontab)을 삭제

     

     

    * root 사용자는 `crontab` 명령으로 특정 사용자를 지정하여 cron 작업을 등록하거나 삭제할 수 있음

    * 일반 사용자는 자신의 작업만 등록하거나 삭제 가능

     

     

    crontab 파일 예시 설명

     

    `* * * * * /path/to/script.sh > /dev/null 2>&1`

     

    - cron 작업 실행 결과를 버리기

     

    - `> /dev/null` : 표준 출력(stdout)을 `/dev/null`로 보내 출력을 버림

    - `2>&1` : 표준 오류(stderr)를 표준 출력으로 연결하여 함께 /dev/null로 보냄. 즉 표준 출력과 표준 오류를 모두 버림

     

    반응형

    댓글