[1. 개요]
주기적으로 반복되는 job 을 자동적으로 실행되게 설정한다.
- crond 라는 데몬이 설정파일대로 작업을 수행한다.
- 설정 파일은 /etc/crontab 이나, 보통 crontab -e 로 수정하도록 한다.
- /etc/crontab 은 모든 유저의 작업을 설정하므로 실행 할 user 이름을 명시해야 한다.
- crontab -e 로 수정 시 현재 로그인한 user 로 실행 됨으로 user 이름을 명시할 필요가 없다.
- 로그는 보통 /var/log/cron 에 저장된다.
[2. 설정 파일 구조]
crontab -e 로 수정하는 것을 가정한다.
=> 실행 할 user 이름 명시가 필요 없다.
아래와 같은 순서로 한줄에 걸쳐 작성한다.
- 분 (몇 분)
- 시 (몇 시)
- 날 (몇 일)
- 달 (몇 월)
- 요일 (일요일, 월요일, ..., 토요일)
=> 일요일이 0 (또는 7도 가능하다/)
=> 토요일이 6 - 명령어
- * 는 매분, 매시, 매일, ... 을 의미한다.
- n-k 는 n분 ~ k분, n시 ~ k시, ... 을 의미한다.
- 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. 주의 사항]
- crontab 명령어에 파일의 경로등을 명시할 때 상대경로 형태로 지정하지 말고, 절대 경로로 지정하도록 한다.
=> 현재 디렉터리 위치가 다를 수 있다. - ssh 나 shell login 시 .bashrc 내 추가한 환경 변수 세팅이 되어있지 않을 수 있다.
=> 전역으로 환경 변수를 설정하거나
=> source 명령어를 먼저 실행해서 환경 변수 세팅을 하고 그 다음 명령어를 수행할 수 있도록 한다. - cron 으로 실행한 명령어 등의 표준 출력은 따로 저장되지 않으니 별도 로그에 저장 하도록 한다.
- 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 |