안녕세계
[Linux] cron, crontab - 예약 실행 a.k.a. 리눅스용 작업 스케쥴러 본문
[Linux] cron, crontab - 예약 실행 a.k.a. 리눅스용 작업 스케쥴러
Junhong Kim 2018. 3. 9. 16:55728x90
반응형
crond
- 프로세스 예약 데몬
- 리눅스용 작업 스케쥴러
- 특정시간에 명령어가 수행되도록 등록 가능합니다.
- cronie(패키지) = crond(크론 데몬) + crontab(크론 테이블)
- 로그:
/var/mail/[username]
에 변경 및 수행 이력이 기록됩니다.
$ which cron
/usr/sbin/cron
$ which crontab
/usr/bin/crontab
$ cat /var/mail/[username]
/var/mail/[username]
에 변경 및 수행 이력이 기록됩니다.$ which cron
/usr/sbin/cron
$ which crontab
/usr/bin/crontab
$ cat /var/mail/[username]
crontab - form
* * * * * [명령어]
┬ ┬ ┬ ┬ ┬
│ │ │ │ └─ 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
│ │ │ └─ 월 (1 - 12)
│ │ └─ 일 (1 - 31)
│ └─ 시 (0 - 23)
└─ 분 (0 - 59)
* * * * * [명령어]
┬ ┬ ┬ ┬ ┬
│ │ │ │ └─ 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
│ │ │ └─ 월 (1 - 12)
│ │ └─ 일 (1 - 31)
│ └─ 시 (0 - 23)
└─ 분 (0 - 59)
crontab - command
목록
현재 사용자
$ crontab -l
no crontab for root
다른 사용자
$ crontab -l -u otheruser
no crontab for otheruser
현재 사용자
$ crontab -l
no crontab for root
다른 사용자
$ crontab -l -u otheruser
no crontab for otheruser
등록
현재 사용자에 대한 cron job
확인 및 수정을 할 수 있습니다.
$ crontab -e
현재 사용자에 대한 cron job
확인 및 수정을 할 수 있습니다.
$ crontab -e
삭제
현재 사용자의 cron job
을 모두 삭제합니다.
$ crontab -r
현재 사용자의 cron job
을 모두 삭제합니다.
$ crontab -r
crontab - example
매 1분 (00:01, 00:02, ...)
* * * * * ./cron.sh
매시 15분, 45분 (00:15, 00:45, 01:15, 01:45, ...)
15,45 * * * * ./cron.sh
10분마다 (00:10, 00:20, ...)
*/10 * * * * ./cron.sh
매일 02:00 [1회/Day]
0 2 * * * ./cron.sh
00:30부터 6시간마다 (00:30, 06:30, 12:30, 18:30)
30 */6 * * * ./cron.sh
01:30부터 6시간마다 (01:30, 07:30, 13:30, 19:30)
30 1-23/6 * * * ./cron.sh
평일(월-금) 08:00
0 8 * * 1-5
주말(일,토) 08:00
0 8 * * 0,6
매 1분 (00:01, 00:02, ...)
* * * * * ./cron.sh
매시 15분, 45분 (00:15, 00:45, 01:15, 01:45, ...)
15,45 * * * * ./cron.sh
10분마다 (00:10, 00:20, ...)
*/10 * * * * ./cron.sh
매일 02:00 [1회/Day]
0 2 * * * ./cron.sh
00:30부터 6시간마다 (00:30, 06:30, 12:30, 18:30)
30 */6 * * * ./cron.sh
01:30부터 6시간마다 (01:30, 07:30, 13:30, 19:30)
30 1-23/6 * * * ./cron.sh
평일(월-금) 08:00
0 8 * * 1-5
주말(일,토) 08:00
0 8 * * 0,6
Using example
- cron job(.sh)은
~/bin
아래에 위치시키고, log 파일은 ~/log
에 저장합니다.
NOTE: default는 ~
과 /Users/[username]
은 동일합니다.
- "Hello World" 를 hello.txt 파일에 기록하는 쉘을 만듭니다.
vi 편집기로 greet.sh
을 엽니다.
$ vi greet.sh
greet.sh
에 아래 코드를 작성한 뒤 저장합니다.
echo "Hello World" >> ~/log/hello.txt
- 우리가 만든 쉘파일을
cron job
에 등록합니다.
cron table
을 편집하기 위해 다음 명령어를 입력합니다.
$ crontab -e
cron table
에 예약 시간과 명령어을 입력합니다.
* * * * * sh /Users/INMA/bin/greet.sh
cron table
작성시 쉘파일 앞에 sh
를 입력하지 않으려면 chomod
로 퍼미션 허용해줘야 합니다.
$ chmod 755 cron.sh
~/bin
아래에 위치시키고, log 파일은 ~/log
에 저장합니다.NOTE: default는 ~
과 /Users/[username]
은 동일합니다.
vi 편집기로 greet.sh
을 엽니다.
$ vi greet.sh
greet.sh
에 아래 코드를 작성한 뒤 저장합니다.
echo "Hello World" >> ~/log/hello.txt
cron job
에 등록합니다.cron table
을 편집하기 위해 다음 명령어를 입력합니다.
$ crontab -e
cron table
에 예약 시간과 명령어을 입력합니다.
* * * * * sh /Users/INMA/bin/greet.sh
cron table
작성시 쉘파일 앞에 sh
를 입력하지 않으려면 chomod
로 퍼미션 허용해줘야 합니다.
$ chmod 755 cron.sh
[관련 포스팅]
[참고]
728x90
반응형
'Infra > Linux' 카테고리의 다른 글
[Linux] Apache(CentOS) 설치 (0) | 2018.04.10 |
---|---|
[Linux] CentOS 명령어 (0) | 2018.04.10 |
[Linux] CentOS 설치 (0) | 2018.04.10 |
[Linux] hosts 파일 (0) | 2018.04.02 |
[Linux] 파이썬 모듈 예약 실행 (with. cron & crontab) (0) | 2018.03.09 |
Comments