[Linux] Job Scheduling (Crontab)

반응형

이번 글에서는 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

댓글

Designed by JB FACTORY