
cron
- 주기적으로 실행하는 작업은 시스템 운영에 필요한 작업과 사용자의 필요에 의한 작업으로 나눌 수 있음
- 시스템 운영에 필요한 작업 : root 권한으로 /etc/crontab 에 등록하여 주기적으로 수행
- 사용자 : crontab 이라는 명령을 수행해서 등록
- crontab 파일 : minute hour day_of_month month day_of_week user-name command
| 필드 | 설명 |
| 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 | 실행할 명령어를 기재 명령어 앞에 사용자 이름을 기재해도 됨 |
- 각 필드는 위의 표에 작성된 설정 값 이외에를 '*', '-', ',', '/' 를 사용할 수 있음
- * : 모든(all)
- - : 연결된 설정 값을 지정할 때 사용
- , : 연결되지 않는 값을 나열할 때 사용
- / : 연결된 설정 값 범위에서 특정 주기로 나눌 때 사용
crontab
- 사용자가 주기적인 작업을 등록하기 위해 사용하는 명령
- 설정된 작업은 '/var/spool/cron/사용자아이디' 파일로 저장됨
- 만약 아이디가 posein 이면 /var/spool/cron/posein 이라는 파일이 생성되면서 관련 정보가 저장됨
crontab [option]
crontab [option] 파일명
옵션
| 옵션 | 설명 |
| -l | crontab에 설정된 내용을 출력 |
| -e | crontab의 내용을 작성하거나 수정 |
| -r | crontab의 내용이 저장된 파일을 삭제 |
| -u | root 사용자가 특정 사용자의 crontab 파일을 다룰 때 사용 |
| -i | -r 옵션으로 crontab 설정 파일을 삭제하기 전에 질의를 진행해서 y 또는 Y를 입력하는 경우에만 실행되도록 지정 |
사용 예
- 설정된 crontab의 내용을 출력
crontab -l
- crontab의 내용을 작성하거나 수정
crontab -e
- 저장된 crontab 설정 파일을 삭제
crontab -r
- posein 사용자의 crontab 내용을 작성하거나 수정
crontab -e -u posein
- 저장된 crontab 설정 파일을 삭제하기 전에 질의 (y/N)를 진행
crontab -ir
- schedule.txt 파일에 설정된 내용을 불러와서 등록
crontab schedule.txt
crontab 설정 예제
- 월요일부터 금요일까지 오후 12시에 /home/posein/work.sh 라는 스크립트를 실행
0 12 * * 1-5 /home/posein/work.sh
- 1월부터 12월까지 2개월마다 1일날 오전 4시 10분에 /etc/check.sh라는 스크립트를 실행
10 4 1 */2 * /etc/check.sh
10 4 1 1-12/2 * /etc/check.sh
10 4 1 1,3,5,7,9,11 * /etc/check.sh
- 월요일 오전 10시에 ‘Notice’라는 제목으로 /root/notice 라는 파일의 내용을 지정한 메일 주소인 posein@naver.com으로 발송
0 10 * * 1 cat /root/notice | mail -s "Notice" posein@naver.com
0 10 * * mon cat /root/notice | mail -s "Notice" posein@naver.com
- 월, 수, 금요일 오전 4시에 ‘.bak’로 끝나는 파일을 찾아 삭제
0 4 * * 1,3,5 find / -name '*.bak' -exec rm rf {} \;
- /etc/heartbeat.sh를 10분 주기로 실행
*/10 * * * * /etc/heartbeat.sh
0-59/10 * * * * /etc/heartbeat.sh
cron 사용자 제한
- /etc/cron.allow 파일과 /etc/cron.deny 파일로 cron 사용자 제한 가능
- /etc/cron.allow 파일 존재
- /etc/cron.deny 파일 존재 유무에 상관 없이 allow 파일에 등록된 사용자만 가능
- /etc/cron.allow 파일 존재 X
- /etc/cron.deny 파일 존재 : deny 파일에 등록된 사용자만 사용 불가
- /etc/cron.deny 파일 존재 X : 일반 사용자는 이용 불가. root 사용자만 이용 가능
'Linux' 카테고리의 다른 글
| [Linux] 프로세스 관련 명령어 - ps (2) | 2025.08.25 |
|---|---|
| [Linux] 프로세스와 /proc 디렉터리 (0) | 2025.08.19 |
| [Linux] 프로세스 관리 명령어 - nice / renice (1) | 2025.08.12 |
| [Linux] 디렉터리 생성 - mkdir (1) | 2025.08.07 |
| [Linux] 디스크 쿼터 - xfs_quota / edquota / repquota / quota / setquota (1) | 2025.08.04 |