반응형
한줄 요약 : 나를 대신해 매일 또는 주기적으로 반복성 작업 해줄 무언가 있다면?
이 뭐꼬? 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
- 이상 끝.