![로그 파일을 정기적으로 삭제하는 방법은 무엇입니까?](https://linux55.com/image/67666/%EB%A1%9C%EA%B7%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%A0%95%EA%B8%B0%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
저는 쉘 스크립팅을 처음 접했습니다. 날짜를 기준으로 디렉터리의 로그 파일을 지우고 싶습니다. 나는 이 코드를 수집했습니다:
DIR1='/home/u01/app/oracle/servers/DIR1/logs'
DIR2='home/u01/app/oracle/servers/DIR2/logs'
DIR3='home/u01/app/oracle/servers/DIR3/logs'
Admin='/home/u01/app/oracle/fmw/admin_poc001/domain/domain_IAM_POC01/servers/AdminServer/logs'
echo "Enter the path"
read path
if [ $path == $DIR1 || $path == $DIR2 || $path == DIR3 || $path == $Admin ]
then
echo $path "check your path"
find $path -mtime +10 --# This line here "10" represents listing out the last 10 days logs
for i in *.log* *.out*
do
cat /dev/null >"$i"
done
else
echo "Re-enter the Correct path"
read path
fi
아래와 같이 입력하면 스크립트가 출력을 제공합니다.
Enter your path :
/home/u01/app/oracle/servers/DIR1/logs
스크립트가 실행되는 날짜 이전의 모든 로그 파일이 지워집니다.
하지만 이 스크립트를 실행하면 로그 파일을 여러 번 지울 수 있기를 바랍니다.다른지난 10일보다 즉, 오늘(2015년 6월 24일)을 실행하면 2015년 6월 14일 이전에 로그 파일을 지울 수 있습니다.
또한: 전체 디렉토리 경로를 입력하는 대신 변수에 저장하고 해당 변수 이름만 입력할 수 있습니까?
예를 들어 /home/u01/app/oracle/servers/DIR1/logs
직접 입력할 수 있는 프로그램을 찾는 것이 아닙니다.디렉토리 1이렇게 하면 전체 경로 없이 해당 디렉토리로 이동할 수 있습니다.
답변1
logrotate
cron에 의해 시작되는 "read man page"라는 도구 가 있으며 man logrotate
이미 로그 디렉토리를 정리하고 여기에 구성 파일을 추가할 수 있습니다./etc/logrotate.d