링크 ux 유 니 버 설 로그 스 크 립 트 자동 청소

1802 단어
1. 본 고 는 자동 배치 시스템 을 만 들 때 간소 화 된 스 크 립 트 로 모든 디 렉 터 리 의 로 그 를 정리 하 는 것 이 주요 기능 입 니 다.
2. 주어진 로그 디 렉 터 리 에 따라 삭제 시간 을 crontab 와 결합 하여 로 그 를 정리 하고 정리 가 완료 되면/var/log/deltelog/월 별 청소 로 그 를 생 성 합 니 다.
3. 확장, 스 크 립 트 는 mtime (마지막 수정 시간) 로 삭제 되 기 때문에 만 료 된 백업 을 삭제 하 는 등 파일 이름 의 제한 을 받 지 않 습 니 다.
셸 팁
find – type f – print 시 줄 바 꿈 이나 빈 칸 에 따라 찾 은 파일 을 출력 합 니 다. sh 에 따라 반응 이 다 릅 니 다. xargs 와 결합 하여 변경 작업 을 삭제 하지 않 으 면 영향 을 줄 수 있 습 니 다.
그래서 추가 – print 0 은 null 로 경계 기호 로 해 야 결혼 xargs – o 로 입력 을 포맷 할 수 있 습 니 다.
find 를 사용 할 때 최소 결과 집합 원칙 에 따라 find 해석 식 은 왼쪽 에서 오른쪽으로 가장 왼쪽 에 있 는 필터 기호 가 최대 데 이 터 를 걸 러 낼 수 있 도록 합 니 다.
당신 은 당신 의 필요 에 따라 crontab 에 추가 할 수 있 습 니 다.
셸 스 크 립 트
#!/bin/sh
###########################
#delete log
# in_day_num: like 1 2 is delete 2day ago logs 
# in_log_path like tomcat log home
###########################
in_log_path=${1}
in_day_num=${2}

tmp_delete_log=/var/log/deletelog/"`date +%Y%m`.log"

deleteLog()
{
 inner_num=${1}
 #find log 
 echo "[`date`]  >> start delete logs---" >> $tmp_delete_log
 find ${in_log_path} -type f -mtime ${inner_num} -print0 | xargs -0 rm -rf
 echo "[`date`]  >> end delete logs---" >> $tmp_delete_log

}
init()
{
 mkdir -p /var/log/deletelog/
}
main()
{
 init
 if [ -z ${in_log_path} ];then
    echo "[`date`] >> error log_path not init---" >> $tmp_delete_log
  return
 fi

 inner_day_num=+7
 if [[ -n ${in_day_num} ]] && [[ ${in_day_num} -ge 1 ]] ; then
    inner_day_num=${in_day_num}
 fi
 deleteLog ${inner_day_num}
}

main

좋은 웹페이지 즐겨찾기