crontab 설정방법과 로그 확인하는 법
crontab이란?
crontab은 리눅스에서 주기적으로 특정 작업을 수행하도록 예약하는 명령어입니다.예를 들어, 매일 밤 백업을 하거나, 매주 월요일에 로그를 삭제하거나, 매시간마다 시스템 상태를 체크하는 등의 작업을 crontab을 이용하여 자동화할 수 있습니다.
crontab은 크게 두 가지로 구분할 수 있습니다.
- 시스템 전체의 crontab : /etc/crontab 파일에 정의된 작업들로, 모든 사용자가 공유합니다.
- 개별 사용자의 crontab : 각 사용자가 crontab 명령어로 생성하고 관리하는 작업들로, 해당 사용자만이 접근할 수 있습니다.
crontab 설정방법
crontab 명령어는 다음과 같은 옵션을 가집니다.- -e : crontab 파일을 편집합니다. 기본적으로 vi 에디터가 열리지만, EDITOR 환경변수를 설정하여 다른 에디터를 사용할 수 있습니다.
- -l : 현재 설정된 crontab 파일의 내용을 출력합니다.
- -r : 현재 설정된 crontab 파일을 삭제합니다.
1 | $ crontab -e | cs |
그러면 다음과 같은 형식으로 작업을 정의할 수 있습니다.
1 | 분 시 일 월 요일 명령어 | cs |
각 항목은 다음과 같은 의미를 가집니다.
- 분 : 0 ~ 59 사이의 숫자로, 명령어가 실행될 분을 지정합니다.
- 시 : 0 ~ 23 사이의 숫자로, 명령어가 실행될 시간을 지정합니다.
- 일 : 1 ~ 31 사이의 숫자로, 명령어가 실행될 날짜를 지정합니다.
- 월 : 1 ~ 12 사이의 숫자로, 명령어가 실행될 달을 지정합니다.
- 요일 : 0 ~ 6 사이의 숫자로, 명령어가 실행될 요일을 지정합니다. 0은 일요일, 1은 월요일 … 6은 토요일입니다.
- 명령어 : 실행할 쉘 스크립트나 프로그램의 경로와 옵션입니다.
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 -f /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을 이용하여 백업, 로그 정리, 시스템 모니터링 등의 작업을 자동화하고 있습니다.
crontab은 간단하면서도 유용한 기능이라고 생각합니다.
여러분도 한번 시도해보시기 바랍니다.
댓글
댓글 쓰기