[Linux] Job Scheduling (Crontab)
- Linux
- 2021. 4. 3.
이번 글에서는 Linux 에서 Crontab 명령어를 사용해 Job 을 Scheduling 하는 방법에 대해 알아보겠습니다.
명령어 요약
# show cron job expression format
cat /etc/crontab
# cron job expression
[MIM] [HOUR] [DOM(Day Of Month)] [MON(Month)] [DOW(Day of Week)] [CMD(Command)]
# show crontab file
cat /var/spool/cron/[User Name]
# show cron log
cat /var/log/cron
# edit crontab
crontab -e
# list crontab
crontab -l
# remove crontab
crontab -r
1. Crontab
crontab 은 주기적인 job 을 scheduling 할 때 사용됩니다.
crond(daemon) 는 crontatb 에 syntax 로 정의된 cron job 을 실행합니다.
1-1) create cron job (edit crontab)
cron job 을 정의하기 위해선, crontab 명령어의 -e 옵션을 사용합니다.
crontab -e
crontab 에 cron job 을 정의하는 방법은 /etc/crontab 파일에 정의되어 있습니다.
cat /etc/crontab
각 Filed 별 입력 가능한 값은 다음과 같습니다.
예를 들어 다음과 같이 입력할 경우
# [MIM] [HOUR] [DOM(Day Of Month)] [MON(Month)] [DOW(Day of Week)] [CMD(Command)]
30 09 11 07 * /home/user1/full-backup
"매주 7월 11일 09시 30분에 /home/user1/full-back 을 실행합니다."
각 필드에 '*' 를 입력하면 .. 이는, Every 를 의미합니다.
예를 들어 다음과 같이 입력하면
# [MIM] [HOUR] [DOM(Day Of Month)] [MON(Month)] [DOW(Day of Week)] [CMD(Command)]
* 09 * * * /home/user1/full-backup
"매주 매년 매일 09시에 /home/user1/full-back 을 실행합니다."
1-2) crontab file
이때 각 user 별로 crontab 은 별개의 file 로 생성되며
/var/spool/cron 디렉토리에 user name 과 동일한 이름으로 파일명이 생성됩니다.
예를 들어 root 계정으로 crontab 을 생성한 경우 /var/spool/cron/root 파일이 생성되며
ec2-user 계정으로 crontab 을 생성한 경우 /var/spool/cron/ec2-user 파일이 생성됩니다.
user 별로 생성된 crontab 목록을 보기 위해선 -l 옵션을 사용합니다.
crontab -l
crontab 을 삭제하기 위해선 -r 옵션을 사용합니다.
crontab -r
1-3) cron log
crontab 에 정의된 시각에 crond (daemon)이 해당 작업을 실행하게 되며, 이때 발생한 log 는 /var/log/cron 파일에 저장됩니다.
cat /var/log/cron
'Linux' 카테고리의 다른 글
[Linux] Job Scheduling (At) (0) | 2021.03.31 |
---|---|
[Linux] Signal (0) | 2021.03.30 |
[Linux] Nice & Renice (0) | 2021.03.29 |
[Linux] Process States (0) | 2021.03.28 |
[Linux] Ping (0) | 2021.03.27 |