SW개발/linux

[linux] cron & crontab 사용법

코대장 2020. 9. 5. 11:58
반응형
한줄 요약 : 나를 대신해 매일 또는 주기적으로 반복성 작업 해줄 무언가 있다면?

이 뭐꼬? cron(크론)? crontab(크론탭)??

이름이 비슷해서 헷갈리는데 누군가 깔끔하게 답해주셨다.

  • cron      : 실행역할
  • crontab  : 설정역할

<1. Basic knowledge>

자, 그럼 시작해보자. 기본 지식습득부터!

우선 crontab 파일 위치 확인, 완전 윈도우베이스 인생이지만,

리눅스랑 친해지려면 명령어를 많이 보고 익혀야 한다. (리)눅스야 우리 친해지자... 후...

[root@mybot ~]# find /etc/ -name crontab /etc/crontab

/var/spool/cron 

- 개별사용자를 위한 crontab 파일 위치

/etc/crontab

 - 시스템 관련 작업 등을 등록해 사용

 

  • 개별사용자 cron 설정 : 직접 편집하여 crontab을 바로 설정
[root@mybot ~]# crontab -e
  • 개별사용자 cron 확인 : 현재 crontab 어떤 내용이 있는지 확인
[root@mybot ~]# crontab -l
  • crontab 삭제 : crontab 한번에 삭제되니 조심해서 사용하자.
[root@mybot ~]# crontab -r

 

<2. Basic Practice>

그럼 이제 crontab 설정을 해보자

우선 로그를 남길 파일을 하나 생성하고 저장

[root@mybot ~]# vi temp.log

다음로 개별사용자 crontab에 아래와 같이 분마다 시간기록을 남길수 있도록 추가

[root@mybot ~]# crontab -e

date는 시간정보를 리턴해주는 리눅스 기본 명령어

* * * * * date >> temp.log

잘 추가됐는지 개별사용자 crontab 조회를 해보자

[root@mybot ~]# crontab -l
bla..bla..bla..
* * * * * date >> temp.log

 잘 실행되는지 확인!

[root@mybot ~]# cat temp.log
Sat Sep  5 11:42:01 KST 2020
Sat Sep  5 11:43:01 KST 2020
Sat Sep  5 11:44:01 KST 2020

만약 에러가 발생했을때를 대비해서 로그도 남겨보자.

* * * * * date >> temp.log 2> tempError.log

 

<3. Upgrade Practice>

이번에는 python으로 짠 코드를 crontab으로 주기적 실행을 시켜보자.

[root@mybot ~]# vi test.py

내용은 위에서 했던 예제와 비슷하다. test_log.txt 파일에 현재시간을 기록하는 것이다.

# python script

import datetime

with open('test_log.txt', 'a+') as f:
    now = str(datetime.datetime.now())
    f.write(now+"\n")
[root@mybot ~]# crontab -e
bla..bla..bla..
* * * * * date >> temp.log 2> tempError.log
* * * * * python test.py

잘 실행되는지 확인

[root@mybot ~]# cat test_log.txt
2020-09-05 12:20:01.505599
2020-09-05 12:21:01.566135
2020-09-05 12:22:01.593750

 

- 이상 끝.