[리눅스] Crontab 이해하기

dobi·2023년 2월 6일
0

💻리눅스

목록 보기
7/7
post-thumbnail

만약 특정 시간마다 실행 혹은 특정 주기마다 시켜야 하는 스크립트가 있다고 하면 어떻게 할까? 이런 상황을 위해 리눅스에서는 crontab을 지원한다. 이는 윈도우의 스케줄러와 유사하다.

Crontab은 특정 시간에 특정 작업을 하기 위해 사용한다.

1. crontab 사용법

만약 현재 시간의 로그를 찍는 test.sh를 cron으로 관리한다고 해보자. 일단 쉘 스크립트를 작성해야한다. test.sh 를 작성해보도록 하자.

echo `date`  >> /root/log.txt

>> 라는 리다이렉션을 통해 계속 log 파일에 현재 시간에 대한 로그를 추가하겠다.

현재 등록된 작업 목록을 보기

crontab -l

이 명령어를 사용할 경우 해당 파일의 내용을 cat 명령어로 확인하는 것처럼 작업 내역을 보여준다.

$crontab -l

crontab 내용 편집

crontab -e

$crontab -e
 # crontab을 편집할 수 있도록 vi 에디터가 활성화 된다.
 * * * * * ./test.sh # 편집을 통해 실행 시킬 crontab 설정

현재 설정된 모든 crontab 작업 삭제

crontab -r

현재 설정된 모든 작업을 삭제하기 때문에 실행할 때 매우 조심해야 한다. 내가 설정하지 않은 crontab 작업이 있을 수 있기 때문에 실무에서는 지양하는 편이 좋다고 한다.

그렇다면 어떤 방법을 통해 크론탭을 삭제해야 할까?
매우 간단하다. 내가 설정한 crontab의 내용 앞에 주석(#) 처리 를 해주거나 해당 내용을 비워두면 된다.

2. 주기별 설정

주기

각 별의 위치마다 분 - 시간 - 일 - 월 - 요일 순이다.

요일에서 0과 7은 일요일이고 1부터 6은 토요일이다.

실행 예시

만약 root에 있는 test.sh 를 cron으로 관리한다고 할 때 주기별로 어떻게 써야할 지 설정해보자.

1) 매분 실행

* * * * * ./test.sh

2) 특정 시간에 실행

매주 월요일 오전 1시에 실행할 경우

0 1 * * 1 ./test.sh

3) 범위 실행

매일 오전 1시부터 30분까지 매분 실행

0-30 1 * * * ./test.sh

4) 간격 실행

매 10분 마다 실행

*/10 * * * * ./test.sh

3. crontab 사용 시 Tip

1. cron을 위한 실행 파일 별도 스크립트로 분리

해당 파일의 내용을 cron 창에 다 적어두는 것이 아니라 파일의 경로를 적어줘서 실행 시키는 것이 좋다.

잘못된 예

* * * * echo `date`  >> /root/log.txt

개선된 예시

 * * * * * ./test.sh

2. 한줄에 하나의 명령만 사용

잘못된 예

*/10 * * * *
./test.sh

개선된 예시

*/10 * * * * ./test.sh

0개의 댓글