Linux 스케줄러
728x90

CentOS 6.10 버전을 기준으로 작성했습니다.

서비스 배포시 logs_$date 로 나오는 로그 백업 폴더가 쌓이고 쌓여서 서버용량을 가득 채워서 스케줄러를 통해서 매일 오전 5시에 bzip 으로 압축하는 스케줄러를 작성했습니다.

1. 스케줄러 리스트

crontabl -l

45 19 * * * /home/user/test.sh
17 20 * * * /home/user/test2.sh

현재 스케줄러가 어떤게 돌아가고 있는지 확인 가능

2. 스케줄러 등록할 스크립트 생성 및 작성

cd /home/user

sudo vi logs_bzip.sh

#실행 권한
sudo chmod +x logs_bzip.sh
#!/bin/sh

# crontab every thursday am 5:00  이런식으로 주석으로 스케줄러 스크립트의 실행 주기를 적어주는게 좋습니다.

#매일 오전 5시에 돌아가니까 전날 날짜를 기준으로 생성된 폴더에 있는 로그를 압축해야합니다.
#그래서 $date 를 사용할때 1 day ago 를 사용해서 전날 생성된 폴더의 갯수로 스크립트를 짰습니다.

LOGS_COUNT=$(find /tomcat/ -name logs_$(date -d '1 day ago' +%Y%m%d)_* | wc -l)

if [ $LOGS_COUNT != "0" ];then
    echo <server pw> | sudo -S bzip2 /tomcat/logs_$(date -d '1day ago' +%Y%m%d)_*/*.txt
elif [ $LOGS_COUNT == "0" ];then
    echo "x"
fi

exit 0

3. 스케줄러 등록

crontab -e
45 19 * * * /home/user/test.sh
17 20 * * * /home/user/test2.sh
# 여기에 추가해주시면 됩니다. vi 커맨드가 되서 i 를 눌러 편집해줍니다.
# 여기서 편집할 때 환경변수 등이 안먹어서 경로를 다 적어주셔야합니다.
0 5 * * * /home/user/logs_bzip.sh

여기서 시간을 정하는 * * * * * 이 부분은 각각
분 , 시 , 일 , 월 , 요일 을 나타냅니다.

1 * * * * => 매 시각의 1분에 실행

* / 1 * * * * => 1분 마다 실행

* 5 * * * => 매일 오전 5시 , (오후는 17로)

* */3 * * =>  3시간 마다

* * * * 2 => 화요일마다.   (0 : 일요일 ~ 6: 토요일)

이렇게 작성하시면 됩니다.

728x90

'OS > Linux' 카테고리의 다른 글

awk, tr 조합  (0) 2023.07.14
OS 입출력  (0) 2023.05.16
Linux Signal  (0) 2022.08.10
리눅스 명령어 정리 중..  (0) 2022.07.25
Linux (CentOS 6) 서비스 등록  (0) 2022.07.25