로그 파일을 정기적으로 삭제하는 방법은 무엇입니까?

로그 파일을 정기적으로 삭제하는 방법은 무엇입니까?

저는 쉘 스크립팅을 처음 접했습니다. 날짜를 기준으로 디렉터리의 로그 파일을 지우고 싶습니다. 나는 이 코드를 수집했습니다:

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

logrotatecron에 의해 시작되는 "read man page"라는 도구 가 있으며 man logrotate이미 로그 디렉토리를 정리하고 여기에 구성 파일을 추가할 수 있습니다./etc/logrotate.d

관련 정보