728x90

주기적으로 반복작업이 수행되게 하고 싶은 경우가 있다.

이럴 때 사용하는 것이 crontab 기능이다.

 

crontab 설치 여부 확인

ps -ef | grep cron

 

 

설치되어 있는 것을 확인할 수 있다.

 

크론탭 시작
service crond start


크론탭 중지
service crond stop


크론탭 재시작
service crond restart

# CentOS 7 에서
systemctl restart crond.service

 

현재 설정된 크론탭 확인하는 방법
crontab -l

크론탭 수정하는 방법
crontab -e

 

실행파일 권한 부여
chmod 100 backup.sh

크론탭 설정시 위치별 의미
* * * * *

* * * * *  수행할 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
│ │ │ └───────── 월 (1 - 12)
│ │ └───────── 일 (1 - 31)
│ └───────── 시 (0 - 23)
└───────── 분 (0 - 59)

예약설정은 분, 시, 일, 월, 요일, 명령어 순으로 설정하면 된다.

 

범위

 1

 분

 0-59

 2

 시

 0-23

 3

 일

 0-31

 4

 월

 1-12

 5

 요일

 0-7(일요일 :0 또는 7, 월요일 :1, 화요일:2 ...)

 6

 명령어

 실행할 명령

 

 

* crontab 등록 예



출처: http://fruitdev.tistory.com/10?category=554679 [과일가게 개발자]


0 1 15 * *  /bin/sh  /usr/local/backup_full.sh   <== chmod 100 으로 권한 미부여시
0 2 * * *  /usr/local/backup_part.sh   <== chmod 100 으로 권한 부여시

# 매 5분마다 실행
*/5 * * * * /root/sh/backup_photo.sh

※ 스크립트가 제대로 동작되지 않아서 구글링으로 확인해보니 /bin/sh 를 넣어주면 되는거 같아서 넣어줬더니 제대로 동작된다.

EditPlus 에서 스크립트 파일을 수정하고 동작여부를 확인했더니 계속 문제를 일으킨다.

명령어를 자세하 봤더니 \r 이 붙어있다.

원래 리눅스상에서 작성해야 하는데 편하게 작업하려고 EditPlus 에서 작성하고 수정했더니 문제를 일으켰다.

리눅스 Shell 상에서 dos2unix backup_part.sh 이런 식으로 해주면 \r 정보가 전부 삭제된다.

EditPlus 에서도 파일형식을 Unix 형식으로 저장하는 옵션이 있더라.

 

유닉스(Unix)/리눅스(Linux)에는, LF (헥사로는 0x0A에 해당) 문자로 줄바꿈을 하고
도스(DOS)/윈도우(Windows)에서는, CR-LF (헥사로는 0x0D 0x0A에 해당) 라는 2문자로 줄바꿈을 하고
맥(Mac)에서는, CR (헥사로는 0x0D 에 해당) 로 줄바꿈한다. "\n" 로 표현한다.

 

 

일정기간이 지난 파일을 삭제하는 방법은 find 명령어를 이용하여 삭제하면 된다.
예제 디렉토리가 "/home/tour/log" 라고 했을때 파일 삭제방법은 다음과 같다.

1. 30일이 지난 파일 삭제
find /home/tour/log -mtime +30 -print -exec rm -f {} \;

2. 10분이 지난 파일 삭제
find /home/tour/log -mmin +10 -print -exec rm -f {} \;

3. 30일이상 err_log 로 시작하고 확장자가 txt 파일인것들만 삭제
find /home/tour/log -mtime +30 -name "err_log*.txt" -print -exec rm -f {} \;

4. 파일 사이즈가 1MB 이상인 파일 삭제(KB로 입력)
find /home/tour/log -size +1024k -print -exec rm -f {} \;

 

# 매시 15분, 45분에 /root/every_30min.sh 를 수행 (하루에 48회[3])
15,45 * * * * /root/every_30min.sh

# 10분마다 /root/every_10min.sh 를 수행 (하루에 144회[4])
*/10 * * * * /root/every_10min.sh

#매일 02:00에/root/backup.sh 를 수행 (하루에 1회)
0 2 * * * /root/backup.sh

# 매 6시간마다 수행(00:30, 06:30, 12:30, 18:30)
30 */6 * * * /root/every_6hours.sh

# 1시부터 매 6시간마다 수행(01:30, 07:30, 13:30, 19:30)
30 1-23/6 * * * /root/every_6hours.sh

# 평일(월요일~금요일) 08:00
0 8 * * 1-5 /root/weekday.sh

# 주말(일요일, 토요일) 08:00
0 8 * * 0,6 /root/weekend.sh
블로그 이미지

Link2Me

,