우분투 리눅스에서 크론탭(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 입력후 엔터(저장후 빠져나가기)
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
5. 로그 확인
/var/www/html/worker/crol/crol.log
/var/www/html/worker/crol/crol_ntis.log
'Linux' 카테고리의 다른 글
배포자동화(CI/CD) - Github Actions/Nuxtjs/Docker/EC2 [링크] (4) | 2024.08.27 |
---|---|
타 사이트를 NGINX Reverse Proxy를 사용중 CORS 에러 해결법은? (2) | 2024.04.17 |
Windows에 Docker 설치후 실행하기 (f. Docker Desktop 없을때) (0) | 2024.04.02 |
[docker - python] ubuntu:22.04 python3.10 Dockerfile (0) | 2023.11.14 |
도커 이미지 컨테이너 (Docker) 관련 자주 쓰는 명령어 (0) | 2023.11.13 |