2014-10-31 3 views
1

우리는 catalina.log를 만드는 우리의 응용 프로그램 서버 (tomcat)를 가지고 있으며 매 시간마다 cron 작업 (bash 스크립트)을 작성하여 로그 파일을 타임 스탬프로 회전해야합니다.bash 스크립트를 사용하여 linux/solaris에서 로그 순환

현재 다음과 같은 방식으로이 작업을 수행하고 있습니다.

  1. catalina.out을 catalina.out으로 복사하십시오. 무엇이든이 과정에서 catalina.out에 기록하는 경우

우리가 가지고있는 문제, 즉 비우는 catalina.out 동안 실종되어있는 catalina.out

  • 빈. 이 문제를 해결할 수있는 방법이 있습니까? 사전 Mayuran

  • +0

    왜 "logrotate"명령을 사용하지 않습니까? 그것은 당신이 원하는 것을 해줍니다. –

    +0

    또는 시도해보십시오. bash 스크립트에서 파일을 복사하는 대신 (마이크로 초/초 걸릴 수 있음) mv 명령을 사용하여 catalina.out을 catalina.out으로 이동하십시오. <$ time variable here> && touch catalina.out –

    답변

    1

    당신은 아마 로그 회전을 관리 할 logrotate 명령을 사용한다 반면에

    덕분에, 그 조언은 직접 귀하의 질문에 대답하지 않습니다.

    두 가지 문제점이 있습니다. 먼저 주 :

    1. 이 catalina.out하는 catalina.out을 복사합니다.

    그럴 것 같지 않습니다. 아마도 오타일까요? 왜 파일을 그 자체로 복사하겠습니까?

    둘째, 이러한 (잠재적으로 큰) 파일을 복사해서는 안됩니다. 모두 이름을 바꾸면됩니다. 그래서 가난한 남자의 로그 회전 (다시, 당신은 logrotate에를 사용한다)과 같이 될 것이다 :

    FILE=catalina.out 
    TIME=`date -u +%s` 
    if [ -e $FILE ] ; then 
        mv ${FILE} ${FILE}.${TIME} && touch ${FILE} 
    else 
        touch ${FILE} 
    fi 
    

    이 의지 물론, catalina.out하여 디스크를 채워 * 파일 결국.. 이 문제를 해결하려면 스크립트를 향상 시키거나 logrotate를 사용해야합니다.