본문 바로가기

Linux

크론탭(crontab) 등록 및 확인

반응형

우분투 리눅스에서 크론탭(crontab)을 등록하고 확인하는 방법을 알아 보겠습니다.

 

크론탭이란?

리눅스 및 유닉스 계열 운영 체제에서 특정 시간에 특정 명령어나 스크립트를 실행하도록 예약할 수 있는 기능
윈도우 스케쥴러와 비슷한 기능
crontab 은 cron table의 줄임말

 

 

참고 : https://cloud-allstudy.tistory.com/104

 

 

A. 크론탭으로 작업시 유의사항

- 가급적 php 호출 경로를 절대경로로 사용한다.
상대경로는 php 실행 위치 때문에 경로를 못찾을 경우가 있다.


- log 파일을 설정한다.
> /var/www/html/worker/crol/crol.log 2>&1


- root 권한이 있으면 sudo vi /etc/crontab 를 이용한다. 사용자를 www-data로 지정해야 로그가 정상적으로 찍힌다. 
root로 해 놓으면 에러 발생해도 로그에 아무것도 남지가 않는다.
* * * * * www-data php -q /var/www/html/worker/crol/crol.php > /var/www/html/worker/crol/crol.log 2>&1

 

 

B. 크론탭 작업 순서

1. 실행할 php 파일 권한 체크 755

chmod 755 /var/www/html/worker/crol/crol.php
chmod 755 /var/www/html/worker/crol/crol_ntis.php

 

2-1. root 권한이 있을경우 crontab 편집 (추천)

sudo vi /etc/crontab

키보드 i 클릭

#매일 1시 15분에 crol.php를 www-data 사용자로 실행하고 로그를 crol.log에 남기기
15 1 * * * www-data php -q /var/www/html/worker/crol/crol.php > /var/www/html/worker/crol/crol.log 2>&1

#매일 2시 15분에 crol_ntis.php를 www-data 사용자로 실행하고 로그를 crol_ntis.log에 남기기
15 2 * * * www-data php -q /var/www/html/worker/crol/crol_ntis.php > /var/www/html/worker/crol/crol_ntis.log 2>&1

#2시간 마다 crol_ntis.php를 www-data 사용자로 실행하고 로그를 crol_ntis.log에 남기기
#* */2 * * * www-data php -q /var/www/html/worker/crol/crol_ntis.php > /var/www/html/worker/crol/crol_ntis.log 2>&1

#1시 2시, 3시 정각마다 crol_ntis.php를 www-data 사용자로 실행하고 로그를 crol_ntis.log에 남기기
#* 1,2,3 * * * www-data php -q /var/www/html/worker/crol/crol_ntis.php > /var/www/html/worker/crol/crol_ntis.log 2>&1

키보드 Esc 키 누르기 -> :wq 입력후 엔터(저장후 빠져나가기)

crontab

 

2-2. root 권한이 없을 경우

crontab -l #크론 리스트 확인
crontab -e #크론 수정

#매일 1시 15분에 crol.php를 실행하고 로그를 crol.log에 남기기 (root로 실행됨 - 에러시 로그에 아무것도 안남을 때가 있음)
15 1 * * * php -q /var/www/html/worker/crol/crol.php > /var/www/html/worker/crol/crol.log 2>&1

#매일 2시 15분에 crol_ntis.php를 실행하고 로그를 crol_ntis.log에 남기기 (root로 실행됨 - 에러시 로그에 아무것도 안남을 때가 있음)
15 2 * * * php -q /var/www/html/worker/crol/crol_ntis.php > /var/www/html/worker/crol/crol_ntis.log 2>&1

Ctl + x 눌러 빠져나가기 -> Y 키 눌러 저장 선택하기 -> Enter 키 눌러 그대로 저장하고 완료하기

 

3. crontab 재시작

service cron restart

 

4. crontab 실행 여부 log 확인

cat /var/log/syslog

crontab log

 

5. 로그 확인

/var/www/html/worker/crol/crol.log
/var/www/html/worker/crol/crol_ntis.log

반응형