리눅스에서 crontab 명령어를 사용해 주기적인 프로세스 실행을 예약하는 방법입니다.
일전에는 at 명령어를 사용해 1회성의 작업을 예약하는 방법에 대해 이야기했습니다.
crontab을 사용하면 정기적으로 하는 작업을 간단하게 자동화 할 수 있습니다.
2.1. /etc/crontab 파일 편집 예제
2.2. crontab -u [계정명] -e 예제
crontab은 cron daemon의 계획표 파일입니다.
따라서 crontab에 실행할 계획을 설정해두면 cron daemon이 해당 내용을 계획에 따라 실행하게 됩니다.
crontab을 설정하는 방법은 크게 2가지가 있는데요.
첫 번째는 /etc/crontab 파일에 직접적으로 실행 계획 설정하는 방법, 두 번째는 crontab -u [계정명] -l 명령어를 이용해 설정하는 방법입니다
crontab -u 계정명 -e 명령어를 사용해도 결국 /var/spool/cron/계정명 으로 cron 계획표 파일이 생성됩니다
각각의 경우에 설정 명령어가 '조금' 다른데요.
/etc/crontab 파일을 수정할 경우에는 실행할 '계정명(user-name)'을 추가로 넣어줘야 합니다.
/etc/crontab 설정 : * * * * * user-name command to be executed
crontab -u [계정명] -e 설정 : * * * * * command to be executed
다음으로는 crontab 시간 설정 규칙과, 위의 2가지 설정 방법 예제를 보겠습니다.
crontab의 시간 설정 규칙은 아래와 같습니다.
*(아스테리스크) 5개로 분, 시간, 날짜, 월, 주를 설정할 수 있고, [user-name] [command] 또는 [command]가 들어가게 됩니다.
# Example of job definition (/etc/crontab) :
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
시간 설정 관련하여 추가적으로 궁금하신 분들은 아래 링크에 시간 설정 관련하여 예제가 잘 정리되어 있으니 참고하시거나 man crontab을 봐주세요.
/etc/crontab 파일에 작업 설정 시 * * * * * [user-name] [command] 형태로 설정해줘야 합니다.
sudo nano /etc/crontab
*/2 * * * * one sh /home/one/command_test/cron/print_date.sh 2>> /home/one/command_test/cron/error.log
systemctl restart crond
crontab -u [계정명] -l 로 계획을 설정할 경우 * * * * * [command] 형태로 설정해줘야 합니다.
sudo crontab -u one -e
*/5 * * * * sh /home/one/command_test/cron/print_date.sh 2>> /home/one/command_test/cron/error_one.log
sudo crontab -u one -l
sudo ls -lh /var/spool/cron
sudo cat /var/spool/cron/one
systemctl restart crond <- 굳이 안해도 적용 됩니다. 혹시를 위해 했습니다.
아래는 제가 crontab 설정할 때 사용하는 엑셀 파일 입니다. 혹시 필요하신 분은 다운받아 사용하시기 바랍니다.
혹시 cron 관련 실행 내역이 어디에 저장되는지 궁금하신 분들이 있을 것 같아 log 저장 경로를 남깁니다.
혹시 궁금하신 사항은 댓글 남겨주시면 답변드리겠습니다. 감사합니다.
[1] 제타 위키, 리눅스 반복 예약 작업, https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%B0%98%EB%B3%B5_%EC%98%88%EC%95%BD%EC%9E%91%EC%97%85_cron,_crond,_crontab
[2] JDM's 님 블로그, 특수 기호/문자 읽는법, https://jdm.kr/blog/87
리눅스 1회성 명령어 실행 예약하는 방법(at 명령어)
https://mentha2.tistory.com/85
[Linux] 데이터 랜덤 추출 (sort , shuf) (0) | 2021.02.16 |
---|---|
엘라스틱서치(elasticsearch)에 IP 설정해서 외부에서 접속하기 (0) | 2020.03.30 |
scp 명령어로 파일 전송하기(AWS에서 로컬로 다운받기 예제) (0) | 2019.12.31 |
리눅스(Linux)에서 일회성 명령어 실행 예약하는 방법(at 명령어) (0) | 2019.12.27 |
리눅스(Linux) 문자, 단어, 행(row) 수 출력 명령어 (wc) 사용법 (0) | 2019.12.25 |