Linux Crontab 설정하기
🚀 스케줄 작업을 위한 리눅스 Crontab 설정
리눅스 서버에 스케줄 작업을 설정해보자.
📌 Crontab이란?
Crontab은 리눅스에서 특정 시간에 특정 작업을 실행하기 위한 스케줄러이다.
특정 시간에 특정 작업을 실행하고 싶을 때 사용한다.
📌 Crontab 설정하기
1.Crontab 편집
crontab -e
- 첫 번째 사용 시, 기본 편집기를 선택하라는 메시지가 표시될 수 있음(일반적으로
nano,vim등이 사용됨)
2. 작업 스케줄 추가
기본 형식
* * * * * command_to_execute
- 1번째
*: 분 (0 - 59) - 2번째
*: 시 (0 - 23) - 3번째
*: 일 (1 - 31) - 4번째
*: 월 (1 - 12) - 5번째
*: 요일 (0 - 7, 여기서 0과 7은 일요일을 의미)
예시1: 매일 자정 backup.sh 스크립트 실행
0 0 * * * /path/to/backup.sh
예시2: 매분 every_minutes.sh 스크립트 실행
* * * * * /path/to/every_minutes.sh
3. 변경사항 저장 및 종료
nano:Ctrl + O(저장) →Ctrl + X(종료)vim::wq→Enter
4. Crontab 리스트 확인
다음 명령어로 설정한 스케줄 리스트를 확인할 수 있다:
crontab -l
📌 Crontab 실행 결과 로그 남기기
Crontab으로 실행한 결과를 로그로 남기고 싶다면,
스케줄러 뒤에 >>를 사용하여 로그 파일을 지정하면 된다.
예시: every_minutes.sh 스크립트 실행 결과를 every_minutes.log 파일에 저장
* * * * * /path/to/send_request.sh >> /path/to/every_minutes.log 2>&1
* * * * *: 매분 실행
/path/to/send_request.sh: 실행할 스크립트
>> /path/to/every_minutes.log: 결과를 저장할 파일
2>&1: 에러 메시지도 함께 저장
로그 파일 관리
그 파일을 보다 체계적으로 관리하고 싶다면, 로그 파일명에 날짜를 포함시키는 방법이 있다.
예를 들어, 다음과 같이 설정할 수 있다:
* * * * * /path/to/send_request.sh >> /path/to/script_$(date +\%Y-\%m-\%d).log 2>&1
$(date +\%Y-\%m-\%d): 현재 날짜를YYYY-MM-DD형식으로 출력하는 명령어
crontab에서%문자를 리터럴로 사용하기 위해\로 이스케이프 처리가 필요