2022. 8. 31. 00:40ㆍIT 공부/개발환경
서버에서 UDP 통신으로 데이터를 수신하고 있으며 syslog-ng를 통해 파일로 저장중이다.
날이 갈수록 파일이 쌓이기 때문에 일정 기간이 지나면 삭제하기 위한 스크립트를 작성하기로 했다.
환경 : Redhat Linux 8
기준 : 7일이 경과한 파일은 삭제
경로 : /data/syslog_ng/
작성할 파일1 : remove_syslog_file.sh
작성할 파일2 : remove_syslog_file.log
사용할 시스템 : crond
1. 경로로 진입한다.
cd /data/syslog_ng
2. vi 에디터로 파일1을 생성한다.
vi remove_syslog_file.sh
3. 내용을 작성한다.
내가 자동삭제하려는 실제 로그파일 경로는 아래와 같다.
[ /data/syslog_ng/log/디렉토리1/디렉토리2/실제로그파일.log ]
또한 크론탭 스케쥴이 실행되면 그 결과를 로그로 남기기 위해 echo 부분을 추가했다.
sh 파일이 실행되면 2022-08-30 13:45:01 Result : delete old syslog files 과 같은 형식으로 CMDOUT이 찍힌다.
#!/bin/sh
find /data/syslog_ng/log/*/*/ -mtime +6 -delete
echo $(date '+%Y-%m-%d %H:%M:%S') "Result : delete old syslog files"
4. echo 메세지가 기록될 빈 파일을 생성한다.
touch remove_syslog_file.log
5. 두 파일의 실행권한을 변경하고 필요하다면 추가로 소유주도 변경한다.
chmod 755 remove_syslog_file.*
chown 사용자계정명:root remove_syslog_file.*
6. root 권한으로 변경 후 crond가 실행중인지 확인한다. (root)
su root
systemctl status crond
7. 스케쥴을 등록하기 위해 crontab 수정 모드를 연다. (root)
crontab -e
8. 쉘 스크립트 파일의 스케쥴을 등록하면서 실행시 로그가 남도록 함께 작성한다.
나는 오전 6시 정각에 스케쥴이 실행되게끔 했다.
# run remove_syslog_file.sh
0 6 * * * /data/syslog_ng/remove_syslog_file.sh >> /data/syslog_ng/remove_syslog_file.log 2>&1
9. crontab 리스트를 출력하여 수정결과를 확인한다.
crontab -l
10. crontab 수정 결과를 crond에 반영하기 위해 재시작한다.
systemctl restart crond
자동삭제처리 끝~!
(+) 나중에 시간이 된다면 삭제처리한 파일이름까지 로그에 남길 수 있도록 업그레이드 하면 좋을 것 같다.
'IT 공부 > 개발환경' 카테고리의 다른 글
[Linux] Rocky Linux 9에서 SFTP 사용을 위한 설정 변경 (0) | 2024.01.26 |
---|---|
[Linux] 디스크 용량 로깅 (0) | 2023.05.02 |
윈도우에서 Visual Studio Code와 Git 사용하기 (0) | 2021.04.24 |
윈도우에서 php 개발환경 만들기 (2) | 2021.04.22 |
리눅스 환경에서 php 개발환경 만들기 (0) | 2021.04.21 |