2010-06-06 3 views
0

PHP에서 생성 된 error_log 파일을 찾기 위해 쉘 스크립트/명령을 만들려고합니다. 파일 크기를 확인하고 제거하십시오. 특정 크기 이상.쉘 스크립팅 : 'error_log'라는 이름의 파일 찾기 및 크기 확인, 특정 크기 이상 제거

난 단지까지 누군가가 도와 드릴까요

for i in `locate -r 'error_log$'`;do echo "$i|" `stat -c %s $i`;done 

아래의 코드를 사용하여 파일 및 파일 크기를 인쇄하는 등의 입수했습니다?

미리 감사드립니다. 예를 들어

답변

1
find $DIR -type f -name error_log -size +${BYTES_MIN}c -print0 |xargs -0 rm 

:

find . -type f -name error_log -size +500k -print0 |xargs -0 rm 

이 조용히 어디서나 현재 디렉토리 아래에있는 오류 로그 파일을 제거하고 바이트보다 큰 50 만 (C, 킬로바이트에 대한 케이윌, M 메가 바이트, ...). 파괴를보고 싶다면 -vrm에 붙이십시오.

+0

'| xargs -0 rm'을'-delete'로 대체하면 우승자가됩니다. – Wrikken

+0

Wilhelm, 고맙습니다.하지만 'locate'로 끝낼 수 있습니까? 찾기는 수십만 개의 폴더로 이동하는 데 오랜 시간이 걸립니다. – Roy

+0

이 문제에 대한 효율적인 해결책을 찾았습니까? 나는 똑같은 그것을 해결하는 빠르고 효과적인 접근 방식을 사랑합니다. –

1

logrotate을 사용하는 것이 좋습니다. 그러나 로그 파일의 위치를 ​​미리 알고 있어야합니다. 나는 locate을 사용하지 않을 것입니다. 그 이유는 그 데이터베이스가 부실하거나 전혀 업데이트되지 않은 데이터베이스를 사용하기 때문입니다.

+0

logrotate는 사용할 수 없습니다.이 error_log 파일은 일반적으로/logs/디렉토리에서 발견되는 아파치 error_log가 아니기 때문에 수백 개의 디렉토리에 존재하며 해당 디렉토리의 PHP 스크립트가 어떤 종류의 오류로 실행될 때마다 생성됩니다 , 심지어 무해한 사람. 그리고 우리가 PHP에서 error_log 파일 생성 기능을 돌릴 수 없다고 가정 해 봅시다. 어쨌든 locate는 내 서버가 cPanel 서버이므로 작업에 적합한 도구입니다. 어쨌든 일주일에 한 번 locate DB를 업데이트합니다. 그리고이 정리 스크립트를 2 주에 1 회 실행할 계획입니다. – Roy