리눅스에서 자동로그 삭제 스크립트 만들기
리눅스 스크립트란.?
리눅스 스크립트는 리눅스 운영 체제에서 해석하는 스크립트 언어로 작성된 명령 또는 명령 집합이에요. 이러한 스크립트는 일반적으로 Linux 시스템에서 작업을 자동화하거나 반복 작업을 수행하는 데 많이들 사용합니다.
Linux 스크립트는 Bash, Perl, Python, Ruby 등과 같은 다양한 스크립트 언어로 작성할수 있어요. Bash는 Linux 시스템에서 가장 일반적으로 사용되는 스크립트입니다. 스크립트는 명령줄, 터미널 또는 대규모 응용 프로그램의 일부로 실행할 수 있습니다. 또한 시스템에 내장된 cron 데몬을 사용하여 특정 시간에 실행되도록 예약할수도 있습니다.!
리눅스 스크립트는 시스템 관리 태스크 자동화, 소프트웨어 설치 관리, 네트워크 설정 구성 및 시스템 리소스 모니터링과 같은 다양한 용도로 사용할 수 있구요. Linux 관리자가 반복 작업을 자동화하고 생산성을 향상할 수 있어요!!
리눅스 자동 삭제
방법 #1. 삭제할 디렉토리, 파일명만 지정
리눅스 서버를 운영하다가 보면 지난 로그를 자동으로 삭제 하고 싶어질 때가 있는데요.
아래 스크립트로 자동삭제를 실행 할 수 있습니다.
예를들어 vi log_delete.sh 라는 파일을 생성하면됩니다.
#!/bin/bash
# 삭제할 디렉토리 지정
log_dir="/var/log/"
# 7일전의 날짜
date=$(date --date="7 days ago" +%Y-%m-%d)
# 7일 이상 전에 마지막으로 수정한 모든 로그 파일 제거
find $log_dir -type f -name "*.log" -mtime +7 -exec rm {} \;
#7일 이상 전에 생성된 .gz 로그 파일 제거
find $log_dir -type f -name "*.gz" -mtime +7 -exec rm {} \;
이 스크립트를 파일 (예: log_delete.sh)에 생성한 파일에 저장하고
실행 권한을 추가(chmod +x log_delete.sh)한 후, sudo(sudo ./log_delete.sh)를 사용하여 실행하여 삭제합니다.
예) 로그는 매일 특정시간에 백업서버로 복사한다.
서버에는 일주일 동안의 로그는 서버에 보관하고 일주일 지난 로그는 자동으로 삭제한다.
이후 크론탭으로 등록해 스케쥴 돌리면 해결!!
방법 #2. 유지하고 싶은 날짜를 계산하여 삭제
방법 #1과 같이 파일을 생성하고, 아래 스크립트를 만든 뒤 파일권한, 실행은 동일하게 합니다.
#!/bin/bash
# 삭제할 디렉토리 지정
directory_path="/path/to/directory"
# 삭제할 파일 형식 지정
file_extension=".log"
# 삭제 할 파일을 몇일동안 유지하고 싶은지.?
days_to_keep=7
# 7일 전의 날짜를 계산
date_to_delete=$(date -d "$days_to_keep days ago" +"%Y-%m-%d")
# 지정한 폴더에서 지정한 파일이 7일보다 오래된 파일 찾기
files_to_delete=$(find "$directory_path" -name "*$file_extension" -type f -mtime +$days_to_keep)
# 파일을 반복하여 삭제
for file in $files_to_delete; do
# 파일이 지정한 날짜 이전에 수정되었는지 확인
if [[ $(date -r "$file" +"%Y-%m-%d") < $date_to_delete ]]; then
rm "$file"
echo "Deleted file: $file"
fi
done
# 끝났으면 "메시지" 출력
echo "Cleanup complete."
자동화를 할 때 해당 스크립트가 잘 실행이 되었는지는 crontab을 통해서 로그를 쌓으면 됩니다!!