728x90
728x170
crontab
- 사용자가 주기적인 작업을 등록하기 위해 사용하는 명령
- 실행하면 기본 편집기인 vi가 실행됨.
- 설정된 작업은 /var/spool/cron/사용자아이디 파일로 저장됨.
- 예) 아이디가 starykss일 경우
- /var/spool/cron/starrykss 이라는 파일이 생성되면서 관련 정보가 저장됨.
- 예) 아이디가 starykss일 경우
cron
- cron 을 이용하여 주기적으로 실행하는 작업
- 시스템 운영에 필요한 작업
- root 권한으로 /etc/crontab에 등록해서 주기적으로 수행 가능
- 사용자의 필요에 의한 작업
- crontab 이라는 명령을 수행해서 등록할 수 있음.
- 시스템 운영에 필요한 작업
- crontab 파일은 총 7개의 필드로 구성됨.
- 각 필드는 *, -, ,, / 를 사용할 수 있음.
- * : 모든(all)
- - : 연결된 설정 값을 지정할 때 사용
- , : 연결되지 않는 값을 나열할 때 사용
- / : 연결된 값 범위에서 특정 주기로 나눌 때 사용
- 필드 종류
- minute
- 분(minute)
- 0~59로 설정
- hour
- 시(hour)
- 0~23으로 설정
- day_of_month
- 날(day of month)
- 1~31로 설정
- month
- 월(month)
- 1~12로 설정
- day_of_week
- 요일(day of week)
- 0~7로 설정
- 0, 7 : 일요일
- 1 : 월요일
- 2 : 화요일
- 3 : 수요일
- 4 : 목요일
- 5 : 금요일
- 6 : 토요일
- 직접 sun, mon, tue, wed, thu, fri, sat 이라고 입력해도 됨.
- user-name
- 사용자 이름
- 일반적으로 생략해서 사용
- command
- 실행할 명령어
- 명령어 앞에 사용자 이름을 명시해도 됨.
- minute
- 각 필드는 *, -, ,, / 를 사용할 수 있음.
(참고) cron 사용자 제한
더보기
- 다음의 파일로 cron 사용자를 제한할 수 있음.
- /etc/cron.allow
- /etc/cron.deny
- /etc/cron.allow 파일이 존재하는 경우
- /etc/cron.deny 파일의 존재 유무에 상관없이 /etc/cron.allow 파일에 등록된 사용자만 사용이 가능함.
- /etc/cron.allow 파일이 존재하지 않고, /etc/cron.deny 파일만 존재하는 경우
- /etc/cron.deny 파일에 등록된 사용자만이 사용이 불가능함.
- /etc/cron.allow 및 /etc/cron.deny 파일이 모두 존재하지 않는 경우 (CentOS 7 기준)
- 일반 사용자는 사용 불가능
- root만 사용 가능
사용법
crontab [option] 파일명
주요 옵션
옵션 | 설명 |
-l | crontab에 설정된 내용 출력 |
-e | crontab에 내용을 작성하거나 수정(Edit) |
-r | crontab의 내용을 삭제(Remove) |
-u | root 사용자가 특정 사용자(User)의 crontab 파일을 다룰 때 사용 |
-i | - -r 옵션으로 crontab 설정 파일을 삭제하기 전에 질의를 진행함. - y 또는 Y를 입력하는 경우에만 실행되도록 지정함. |
사용 예
예 1
- 설정된 crontab의 내용 출력
$ crontab -l
예 2
- crontab의 내용을 작성하거나 수정
$ crontab -e
예 3
- 설정된 crontab의 내용 삭제
$ crontab -r
예 4
- starrykss 사용자의 crontab 내용을 작성하거나 수정
$ crontab -e -u starryks
예 5
- 저장된 crontab 설정 파일을 삭제하기 전에 질의(y or Y)를 진행함.
$ crontab -ir
예 6
- schedule.txt 파일에 설정된 내용을 불러와서 등록함.
$ crontab schedule.txt
설정 예
minute hour day_of_month month day_of_week username command
분 시 일 월 요일 사용자이름 명령
* : all
- : 연결된 설정 값을 지정할 때 사용 (예: 1-5)
, : 연결되지 않은 값을 나열할 때 사용
/ : 특정 주기로 나눌 때 사용 (예: 1-12/2)
예제 1
- 월요일부터 금요일까지 오후 12시에 /home/starrykss/work.sh 라는 스크립트 실행
0 12 * * 1-5 /home/starrykss/work.sh
예제 2
- 1월부터 12월까지 2개월마다 1일날 오전 4시 10분에 /etc/check.sh 라는 스크립트 실행
10 4 1 1-12/2 * /etc/check.sh
예제 3
- 월요일 오전 10시에 `Notice`라는 제목으로 /root/notice라는 파일의 내용을 지정한 메일 주소인 `starrykss@naver.com`으로 발송
0 10 * * 1 cat /root/notice | mail -s "Notice" starrykss@naver.com
예제 4
- 월, 수, 금요일 오전 4시에 .bak로 끝나는 파일을 찾아 삭제
0 4 * * 1,3,5 find / -name '*.bak' -exec rm -rf {} \;
예제 5
- /etc/heartbeat.sh를 10분 주기로 실행함.
- 0-59/10 * * * * /etc/heartbeat.sh와 동일함.
*/10 * * * * /etc/heartbeat.sh
728x90
그리드형(광고전용)
'System Software > Linux' 카테고리의 다른 글
[리눅스 명령어] gzip / gunzip / zcat (0) | 2022.03.12 |
---|---|
[리눅스 명령어] compress / uncompress (0) | 2022.03.12 |
[리눅스 명령어] tar (0) | 2022.03.12 |
[리눅스] 소스 파일을 이용한 설치 (0) | 2022.03.12 |
[리눅스 명령어] at / atq /atrm (0) | 2022.03.12 |
[리눅스 명령어] chkconfig (0) | 2022.03.12 |
[리눅스 명령어] ntsysv (0) | 2022.03.12 |
[리눅스 명령어] pkill (0) | 2022.03.10 |