crontab 설정방법과 로그 확인하는 법

crontab이란?

crontab은 리눅스에서 주기적으로 특정 작업을 수행하도록 예약하는 명령어입니다.
예를 들어, 매일 밤 백업을 하거나, 매주 월요일에 로그를 삭제하거나, 매시간마다 시스템 상태를 체크하는 등의 작업을 crontab을 이용하여 자동화할 수 있습니다.

crontab은 크게 두 가지로 구분할 수 있습니다.
  • 시스템 전체의 crontab : /etc/crontab 파일에 정의된 작업들로, 모든 사용자가 공유합니다.
  • 개별 사용자의 crontab : 각 사용자가 crontab 명령어로 생성하고 관리하는 작업들로, 해당 사용자만이 접근할 수 있습니다.
이번 포스팅에서는 개별 사용자의 crontab에 대해 알아보고, 설정방법과 성공여부 확인 방법에 대해 설명하겠습니다.

crontab 설정방법

crontab 명령어는 다음과 같은 옵션을 가집니다.
  • -e : crontab 파일을 편집합니다. 기본적으로 vi 에디터가 열리지만, EDITOR 환경변수를 설정하여 다른 에디터를 사용할 수 있습니다.
  • -l : 현재 설정된 crontab 파일의 내용을 출력합니다.
  • -r : 현재 설정된 crontab 파일을 삭제합니다.
crontab 파일을 편집하려면 다음과 같이 명령어를 입력합니다.

1
$ crontab -e
cs

그러면 다음과 같은 형식으로 작업을 정의할 수 있습니다.

1
분 시 일 월 요일 명령어
cs

각 항목은 다음과 같은 의미를 가집니다.
  • 분 : 0 ~ 59 사이의 숫자로, 명령어가 실행될 분을 지정합니다.
  • 시 : 0 ~ 23 사이의 숫자로, 명령어가 실행될 시간을 지정합니다.
  • 일 : 1 ~ 31 사이의 숫자로, 명령어가 실행될 날짜를 지정합니다.
  • 월 : 1 ~ 12 사이의 숫자로, 명령어가 실행될 달을 지정합니다.
  • 요일 : 0 ~ 6 사이의 숫자로, 명령어가 실행될 요일을 지정합니다. 0은 일요일, 1은 월요일 … 6은 토요일입니다.
  • 명령어 : 실행할 쉘 스크립트나 프로그램의 경로와 옵션입니다.
예를 들어, 매일 오전 10시에 /home/user/backup.sh 스크립트를 실행하고 싶다면 다음과 같이 작성할 수 있습니다.

1
0 10 * * * /home/user/backup.sh
cs

또는, 매월 첫째 주 월요일에 /home/user/clean.sh 스크립트를 실행하고 싶다면 다음과 같이 작성할 수 있습니다.

1
0 0 * * 1 [ `date +\%d` -le 7 ] && /home/user/clean.sh
cs

여기서 [ date +\%d -le 7 ] 는 날짜가 7일 이하인지 검사하는 조건문입니다.
crontab에서 % 기호는 줄바꿈을 의미하므로, %로 이스케이프 해야 합니다.

crontab 파일을 작성하고 저장하면, crontab: installing new crontab 이라는 메시지가 출력되고, 설정된 작업이 자동으로 실행됩니다.

crontab 성공여부 확인 방법

crontab으로 설정된 작업이 성공적으로 실행되었는지 확인하는 방법은 다음과 같습니다.
  • /var/log/cron 파일을 확인합니다. 이 파일에는 crontab으로 실행된 모든 작업의 로그가 기록됩니다. 다음과 같은 명령어로 확인할 수 있습니다.
1
$ sudo tail -/var/log/cron
cs

명령어에 로그를 남기는 옵션을 추가합니다.
예를 들어, /home/user/backup.sh 스크립트를 실행할 때, 결과를 /home/user/backup.log 파일에 기록하고 싶다면 다음과 같이 작성할 수 있습니다.

1
0 10 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1
cs

여기서 >> 는 출력을 파일에 추가하는 리다이렉션 연산자이고, 2>&1 은 표준 에러를 표준 출력으로 보내는 의미입니다.
  • 메일로 알림을 받습니다. MAILTO 변수를 설정하여 원하는 메일 주소로 알림을 받을 수 있습니다. 예를 들어, user@example.com 으로 알림을 받고 싶다면 다음과 같이 작성할 수 있습니다.
1
2
MAILTO=user@example.com
0 10 * * * /home/user/backup.sh
cs

결론

이번 포스팅에서는 crontab이란 무엇인지, 그리고 crontab을 이용하여 주기적인 작업을 설정하고 성공여부를 확인하는 방법에 대해 알아보았습니다.
crontab은 리눅스 시스템에서 자동화된 작업을 수행하기 위한 강력한 도구로써 잘 활용하면 시스템 관리나 개발에 편리함을 누릴 수 있습니다.
저는 개인적으로 crontab을 이용하여 백업, 로그 정리, 시스템 모니터링 등의 작업을 자동화하고 있습니다.
crontab은 간단하면서도 유용한 기능이라고 생각합니다.
여러분도 한번 시도해보시기 바랍니다.

댓글

이 블로그의 인기 게시물

Microsoft Defender 방화벽 설정 또는 해제하는 방법

한국 군비지출 세계 9위