본문 바로가기
개발자 일지/Linux

[리눅스 기초]cron을 사용하여 정기적으로 실행하기

by 네빌링 2021. 5. 16.
반응형

-리눅스 크론(cron)을 사용하여 정기적으로 프로세스를 실행하는 방법을 학습한다.

-생활코딩의 리눅스 강의를 바탕으로 학습 및 보충학습하였다.

-ubuntu 12.10을 사용하였다.


크론이란

 특정 시간에 특정 작업을 자동으로 수행해야 할 때 크론(cron)을 사용한다. 스케쥴링 역할을 한다. 예를 들어 새벽 4시에 정기적으로 사용자들에게 메일을 발송하는 경우가 대표적이다.

 크론 작업 설정은 crontab에서 한다. crontab은 /etc/crontab에 위치해 있다. 여기 설정된 크론 설정 정보를 통해 자동으로 수행될 프로세스가 결정된다.

 크론 설정은 crontab 명령어를 통해 할 수 있다. crontab -e를 입력하면 편집할 편집기를 설정하라는 메뉴가 나온다.(최초1번만 나옴)

2번 nano로 진행

 

2번 nano를 입력하면 nano편집기로 crontab 파일이 열린다.

 

 

스크롤으 내려 아래다가 크론식을 입력한 후 ctrl+O로 작성완료한다. 

 

 

크론식이 */1 * * * *이라고 작성되어 있고 뒤에 date >> date.log 2>&1라고 작성되어 있다. 일단 위의 주석에 #m h dom mon dow command라고 메뉴얼이 있기 때문에 이에 맞추면 되는데 헷깔리면 블로그 검색을 통해 원하는 크론식을 찾아쓰면 될 것 같다. 일단 */1 * * * *는 일월상관없이 1분마다 동작한다는 의미이다. 그리고 뒤에 date >> date.log 2>&1은 해석하면 다음과 같다.

  • date >> date.log : date명령어는 현재 날짜와 시간을 출력하는데, 이를 date.log파일에 IO 리다이렉션하여 append한다. 즉, 크론식이 1분마다 설정되어 있으므로 1분마다 date명령어의 결과가 date.log로 리다이렉션 되어 업데이트된다는 의미이다. '>'가 2개이면 지우고 업데이트가 아니라 기존 파일에 append 방식으로 업데이트한다.
  • 2>&1 : 2는 표준에러인데 에러가 발생하면 표준출력(1)로 리다이렉션 한다는 의미이다. 엠퍼샌드(&)를 안 붙이면 1이라는 이름의 파일로 인식하기 때문에 꼭 붙여야 한다.

 즉, 1분마다 날짜와 시간을 date.log파일에 업데이트해주라는 의미의 크론식이다. 이제 nano 편집기를 나간 후 tail -f date.log 명령어로 변경때마다 결과를 출력해주는 것을 확인할 수 있다.(참고로 크론식 작성이 잘 되었는지 확인하려면 crontab -l 옵션을 입력하면 확인 가능하다)

 

매 1분마다 업데이트

 참고로 기존에 계속 사용하던 user1이라는 아이디로는 크론식이 제대로 동작하지 않아 최초에 만든 유저 아이디로 변경하여 테스트했더니 작동한다. 유저의 권한과 관련된 문제인지 크론식이 동작 안 할 수도 있는 것 같은데 어디서부터 확인해야할지 잘 모르겠다..일단 보류! 다시 복습할 타이밍이거나 실무에서 사용할 기회가 있으면 더 공부해봐야겠다.

 

 

 

반응형