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: :wqEnter

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에서 % 문자를 리터럴로 사용하기 위해 \로 이스케이프 처리가 필요

updated_at 2024-03-01