본문 바로가기

서버 관리/리눅스

프로세스 관리 - crontab

[1. 개요]

주기적으로 반복되는 job 을 자동적으로 실행되게 설정한다.

  1. crond 라는 데몬이 설정파일대로 작업을 수행한다.
  2. 설정 파일은 /etc/crontab 이나, 보통 crontab -e 로 수정하도록 한다.
  3. /etc/crontab 은 모든 유저의 작업을 설정하므로 실행 할 user 이름을 명시해야 한다.
  4. crontab -e 로 수정 시 현재 로그인한 user 로 실행 됨으로 user 이름을 명시할 필요가 없다.
  5. 로그는 보통 /var/log/cron 에 저장된다.

[2. 설정 파일 구조]

crontab -e 로 수정하는 것을 가정한다.
=> 실행 할 user 이름 명시가 필요 없다.

 

아래와 같은 순서로 한줄에 걸쳐 작성한다.

  • 분 (몇 분)
  • 시 (몇 시)
  • 날 (몇 일)
  • 달 (몇 월)
  • 요일 (일요일, 월요일, ..., 토요일)
    => 일요일이 0 (또는 7도 가능하다/)
    => 토요일이 6
  • 명령어
  1. * 는 매분, 매시, 매일, ... 을 의미한다.
  2. n-k 는 n분 ~ k분, n시 ~ k시, ... 을 의미한다.
  3. 5/2 는 5분에 시작하여 2분 간격, 5시에 시작하여 2분 간격, ... 을 의미한다.

ex)

0 9 1 1-8/2 * /root/check.sh

=> 1 월부터 8월까지 2달 간격으로 1일 9시 0분에 /root/check.sh 을 실행한다. 

=> 1월 1일 09:00 에 실행

=> 3월 1일 09:00 에 실행

...


[3. 주의 사항]

  1. crontab 명령어에 파일의 경로등을 명시할 때 상대경로 형태로 지정하지 말고, 절대 경로로 지정하도록 한다.
    => 현재 디렉터리 위치가 다를 수 있다.
  2. ssh 나 shell login 시 .bashrc 내 추가한 환경 변수 세팅이 되어있지 않을 수 있다.
    => 전역으로 환경 변수를 설정하거나
    => source 명령어를 먼저 실행해서 환경 변수 세팅을 하고 그 다음 명령어를 수행할 수 있도록 한다.
  3. cron 으로 실행한 명령어 등의 표준 출력은 따로 저장되지 않으니 별도 로그에 저장 하도록 한다.
  4. cron 설정 파일에 % 를 사용해야 할 경우 백슬래시 문자를 사용하도록 한다.
    => ex)
    * * * * * echo $(pwd) >> /root/abc_$(date +\%Y\%m\%d_\%H\%M\%S).log 

 

 

'서버 관리 > 리눅스' 카테고리의 다른 글

shell script 정리  (0) 2023.04.17
jq 명령어  (0) 2023.02.05
커널 매개변수  (0) 2023.02.04
메모리 관리  (0) 2022.12.28
프로세스 관리 - ps, top  (0) 2022.12.28