04
30

서버 작업을 하거나 Automation을 하다보면 종종 스케줄러를 사용할 경우가 있다. Automation을 모든 일에 모토로 하다보니 자주 사용하게 되는 것은 당연하지만 왜인지 번번히 방법을 헷갈리곤 한다.

윈도우는 ‘작업 스케줄러’를 통해 루틴한 작업을 설정 가능하지만, 리눅스는 Crontab을 기본적으로 사용한다. 여기서 리눅스(Linux)는 우분투(Ubuntu), 데비안(Debian) 등과 같은 OS 들을 의미하는 것으로, 파일 시스템을 기반으로 모든 것이 이루어진다. 즉 스케줄러 또한 파일 시스템을 조작해서 설정할 수 있다는 의미. 천만 다행으로 일부 자주 사용되는 유틸리티의 경우 명령어 형태로 제공하고 있다.

그중 안쓰면 자꾸 까먹는 Crontab의 규칙 및 설정방법, 그리고 로그 확인하는 방법까지 알아보도록 하자.


Crontab 설정방법

최초로 Crontab을 설정하는 방법은 아래와 같다.

  1. 터미널을 연다. 마우스 우클릭 혹은 어플리케이션 중 Terminal을 찾아서 열 수 있다.
  1. 터미널에 crontab -e 명령어를 입력한다. 앞서 언급했듯이 리눅스는 파일시스템 기반으로 동작하는데 이 명령어는 관련 설정 파일을 열어준다.
  1. 새로운 작업을 추가하려면, 다음 형식으로 작성한다:
    • [빈도] /경로/스크립트_파일.sh 위 예시는 매 분마다 스크립트 파일을 실행하도록 설정한 것으로 원하는 실행 주기에 맞게 다양한 옵션을 설정할 수 있다. 예를 들어, "30 2 * * 1-5 /경로/스크립트_파일.sh"는 매주 월요일부터 금요일까지 오전 2시 30분에 스크립트 파일을 실행하도록 설정한 것이다.
  1. 작업을 저장하려면, :wq를 입력하면 된다. 기본적으로 vi 혹은 vim 편집기를 사용하는 경우인데 이러한 편집기의 단축키도 따로 정리해두면 좋을 것 같다.


Crontab 로그 확인

crontab 로그를 확인하는 방법은 다음과 같다:

  1. 터미널에서 crontab 로그 파일을 확인할 수 있는데 이 파일의 위치는 시스템마다 다를 수 있으므로, 운영체제 버전과 설정에 따라 다를 수 있습니다. 자주 사용되는 Path들을 예로 들자면
    • /var/log/cron
  1. 로그 파일을 확인하려면, 다음 명령어가 필요하다:
    • tail -f /var/log/cron 이 명령어는 cron 로그 파일의 마지막 10줄을 출력하며, 로그 파일이 업데이트될 때마다 자동으로 출력다. 자세히 알고싶다면 tail 명령어 사용법을 찾아보자.
  1. crontab 실행 결과를 로깅하도록 스크립트 파일을 수정할 수도 있다. 이 경우, 스크립트 파일에서 로그 파일을 직접 생성하고 관리할 수 있다.


Trial and Error

Crontab에서 스크립트 파일이 실행되지 않을 때는 몇 가지 확인해볼 사항이 있다. 가장 일반적인 이유는 파일 경로가 올바르지 않아서 이다. 경로가 올바른지 확인하고, 파일이 실행 가능한 상태인지 확인해보자. 또한, 파일에 실행 권한이 있는지도 확인해야 한다. 파일에 실행 권한을 부여하려면, chmod +x /경로/스크립트_파일.sh와 같은 명령어를 사용하면 된다.

  • 파일 내용이 정확한지 확인한다.
  • 모든 시스템 명령어는 절대 경로를 사용해야 한다. 다른 위치에서 실행되는 경우 스크립트가 작동하지 않을 수 있다.
  • 스크립트 파일에서 로깅 관련 코드가 정확한지 확인한다.
  • crontab 실행 시간이 정확한지 확인해야 한다. 타임존이나 기본 시스템 설정에 따라 시간이 다를 수 있으므로 주의해야 한다.
  • 시스템 로그를 확인하여 문제가 있는지 확인한다.


위에서 Crontab 설정 방법, 로그 확인하는 방법 및 일반적인 문제를 해결하는 방법을 정리해봤다. Crontab을 사용하여 시스템 작업을 자동화하는 것은 매우 유용하지만, 언제나 그렇듯이 시스템 설정과 관련된 문제가 발생할 수 있다. 문제가 발생하면 차분하게 문제를 해결할 수 있는 능력이 필요하다.

이 문서가 나를 포함한 또다른 Crontab으로 헤매고 있는 사람들에게 도움이 되기를 🙂

COMMENT