/ var / log를 모두 삭제 하시겠습니까?


26

에서 모든 것을 삭제할 수 있습니까 /var/log? 아니면 파일을 (재귀 적으로) 삭제 /var/log하고 폴더를 남겨 두어야합니까?

누구든지 좋은 rm명령 줄을 가지고 있습니까? (관리자 기술이 나를 긴장하게 만듭니다.)

참고 : 데비안을 사용하고 있습니다. 어떤 버전인지 잘 모르겠습니다.


3
로그 파일을 삭제하는 것은 좋지 않은 생각입니다. 또한 자체 로그 파일이있는 실행중인 모든 프로세스를 찾아서 "kill -HUP"으로 다시 시작하면 프로그램이 필요한 로그 파일을 다시 생성하게됩니다. 로그 파일을 삭제하지 말고 logrotate와 같은 유틸리티를 사용하여 / var / log의 내용을 자동으로 관리하십시오 (프로세스를 HUP하는 것과 같습니다) 다른 각도에서 처리하고 싶을 수도 있습니다. 이 문제를 해결하기 위해 어떤 문제를 해결하려고합니까?
Twirrim

답변:


22

파일을 삭제하는 대신 예를 들어을 사용하여 회전시켜야합니다 logrotate.

어느 시점부터 실제로 로그가 필요한지 알 수 없으므로 합리적인 기간 (예 : 3 개월)까지 보관하는 것이 좋습니다.

logrotate 오래된 로그 파일을 압축하여 많은 디스크 공간을 차지하지 않도록 할 수 있습니다.


3
logrotate는 가장 오래된 파일을 삭제할 수도 있습니다.
Kevin M

8
IMHO 모든 로그를 삭제하면 경우에 따라 완벽하게 이해 될 수 있습니다. 예를 들어 새로운 배포에 사용할 Virtial Machine 이미지를 만들고 싶습니다. 말할 것도없이, 로그, 이력, 캐시 등이 저장되지 않은 정말 깨끗한 시스템이 되길 바랍니다.
Ivan

2
죄송하지만 3 개월 된 로그 파일을 보는 것은 고고학입니다. 문제점을 식별하기 위해 로그를 수집하는 경우 신속하게 평가하십시오.
카운터 모드

4
@countermode 당신은 향수를 느끼지 않는가? 좋은 시간을 생각하는 3 개월 된 로그 파일을 보는 것처럼?
Broco

좋아, 나는 명령을 본다. 이것을 어떻게 사용 하는가? 남자 logrotate는 그것을 cron에서 사용한다고 말합니다. -f 옵션을 사용한다고 가정합니까?
SDsolar 2013 년

17

/ var / log에서 모든 것을 삭제하면 존재하는 것으로 예상되는 폴더 (예 : exim4, apache2, apt, cups, mysql, samba)가 있기 때문에 매우 짧은 시간에 수많은 오류 메시지가 나타날 수 있습니다. 그리고 더). 또한 : 로그 파일이없는 경우 로그 파일을 만들지 않는 일부 서비스 또는 응용 프로그램이 있습니다. 그들은 적어도 빈 파일이 존재할 것으로 기대합니다. 따라서 귀하의 질문에 대한 직접적인 대답은 실제로 "하지 마십시오 !!!"입니다. .

joschi가 지적했듯이 이것을 할 이유가 없습니다. 몇 년 동안 단일 로그 파일이 삭제되지 않은 데비안 서버가 실행 중입니다.


나는 그것을 몰랐다. 알아 둘만 한. +1 + 수락을 변경했습니다.

1
방금이 작업을 완료했습니다. 소원! 이 답변을 이전에 읽었습니다.
VarunAgw

IMHO 로그 파일을 제거해야 할 이유가 있습니다. 예를 들어, 다른 사람이 사용하기 위해 가상 머신을 내보내려고하지만 가상 머신 이미지에 내보내기 전에 발생한 모든 세부 사항이 포함되지 않도록하려는 경우가 있습니다.
a3nm

15

모든 파일을 삭제하십시오.

find /var/log -type f -delete

모든 .gz 및 회전 된 파일 삭제

find /var/log -type f -regex ".*\.gz$"
find /var/log -type f -regex ".*\.[0-9]$"

테스트하려면 "-delete"없이 명령을 실행하십시오.


포장하기 전에 Vagrant 상자의 로그 파일을 지우는 것이 유용하다는 것을 알았습니다.
Rudolf Vavruch

10

마스터에서 가상 머신을 복제하고 있습니다. 복제본을 부팅 할 때 마스터의 로그를 얻지 않도록 마스터의 로그를 지우는 것이 좋습니다. 나는 tcsh에서했다 :

cd /var/log
foreach ii ( `find . -type f` )
foreach? cp /dev/null $ii
foreach? end

로그를 지우고 파일을 유지합니다.


설명과 같이 사용 사례로 제한해야합니다.
Sven

4
bash에서 : / var / log / -type f -exec cp / dev / null {} \;를 찾으십시오.
gerard 2016 년

7

파일 을 삭제하지 않고 Linux 시스템의 모든 로그를 정리 하십시오.

for CLEAN in $(find /var/log/ -type f)
do
    cp /dev/null  $CLEAN
done

Samba ( /var/www/samba)는 ip 주소로 로그 파일 이름을 생성합니다. 삭제하려는 경우 :

for CLEAN in $(find /var/log/samba -type f)
do
    rm -rf $CLEAN
done

2
유용한 스크립트.
Anmol Singh Jaggi 2016 년

당신은 교환 수 cp /dev/null $CLEAN> $CLEAN.
ThoriumBR

2

ctime 옵션을 사용하여 오래된 파일을 찾을 수 있습니다 ... 예 :

find -ctime +30

bindbn Explain과 같이 먼저 찾기 가져 오기 파일을 시도한 후 delete 옵션 : D를 사용하십시오.


2

/var/log종종의 권한이 drwxrwxr-x있으므로 사용자가 root이거나 권한있는 그룹에 속하지 않는 한 사용자가 쓸 수 없습니다. 즉, 권한이없는 사용자는 새 로그 파일을 만들 수 없습니다.

내 포인트에 기록 할 것으로 예상 응용 /var/log종종에 존재 어딘가로 파일을 터치합니다 /var/log(종종 상승 된 권한으로 발생) 시간을 설치하는 동안 계층, 그리고 의지 chmod와 가능성 chown이 권한 그 시간에 될 권한이없는 사용자를위한 적절한 응용 프로그램을 사용하여.

예를 들어 Apache 로그는 일반적으로에 의해 작성되며 nobody, Apache는 시스템을 과도한 위험에 노출시키지 않고 Apache가 작업을 수행 할 수있는 권한이 가장 적은 사용자입니다. 그러나 더 많은 상용 응용 프로그램조차 종종에서 로그 파일에 쓸 수있을 것으로 기대합니다 /var/log.

로그 파일과 로그 파일 경로가 없으면 어떻게됩니까? 그것은 전적으로 응용 프로그램에 달려 있습니다. 일부 응용 프로그램은 자동으로 로깅을 건너 뜁니다. 다른 사람들은 많은 경고를 만들 것입니다. 그리고 다른 사람들은 단순히 구제 될 것입니다. 엄격한 규칙은 없습니다. 응용 프로그램 개발자의 감시와 개발자가 로그 기능을 얼마나 중요하게 고려하는지에 달려 있습니다. 기껏해야 응용 프로그램은의 대상에있는 로그 파일에 쓰거나 로그 파일에 쓰거나 쓰려고 시도 할 수 있으며, 쓸 /var/log수있는 권한이없는 사용자가 실행하기 때문에 로그 파일을 작성할 수 없습니다. 파일 시스템의 해당 부분.

따라서 짧은 대답은 아니요, 모든 것을 삭제하지 마십시오 /var/log. 계약 사용자는 시스템에서 실행되는 응용 프로그램에 대해 충분한 권한을 가지고 계약을 깨뜨리고 약간의 소음, 로그 자동 기록 실패 및 일부 완전 파손.

적절한 조치는 logrotate적절한 구성 파일 로 설정하는 것 입니다. 일반적으로 회전은 크론 작업과 연관됩니다. 회전은 간격 기반이거나 크기 기반이거나 둘 다일 수 있습니다. 간격이 만료 될 때 로그 파일이 여전히 비어 있으면 간격 기반 회전을 피하는 규칙을 설정할 수도 있습니다. 로테이션에는 로그 파일 메일 링, 압축, 삭제, 파쇄 등이 포함될 수 있습니다.

일반 사용자는 로그 회전에 대해 너무 걱정할 필요가 없습니다. 개발자는 아마도 사용하는 로그에 로테이션 규칙이 설정되어 있는지 확인하고 싶을 것입니다. 실제로, 개발자는 소프트웨어가 작성하고 작성할 소프트웨어 특정 로그에 대해 설치시 로그 회전을 설정하는 것이 좋습니다.


1

여기에 간단한 클리너를 구현했습니다.

https://github.com/Lin-Buo-Ren/Coward-Unix-Log-Cleaner

간단하게 :

  • 아래의 로그 파일 이름 패턴이 다음과 같은 파일 이름을 삭제합니다. /var/log
    • ^.*/.+\.[[:digit:]]+(\.[[:alpha:]]+)?$
    • ^.*/.+\.old$ (대소 문자 구분)
  • 아래의 로그 파일 이름 패턴을 가진 파일 이름을 가진 파일 자르기 / 빈 파일 /var/log
    • ^.*/.+\.log$ (대소 문자 구분)

-2
function goodbyelogs {
find /var/log -type f
}

for i in return $(goodbyelogs);
do sudo cat /dev/null > $i;
echo "Log $i has been cleared";
done

실행 가능한 스크립트를 만들고 sudo가 작동하지 않으면 루트로 실행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.