it-swarm-ko.com

로그를 지우는 적절한 방법이 있습니까?

일반적으로 로그를 지우는 적절한 방법이 있는지 궁금합니다.

우분투를 처음 사용하고 Postfix를 설정하려고합니다. 문제의 로그는 /var/log/mail.log. 내가 들어가서 모든 줄을 삭제하고 저장하는 것이 아니라 그것을 지우는 올바른 방법이 있는지 궁금합니다. 로그를 지우고 저장 한 직후 오류가 기록되지 않는 경우가 있습니다.

참고 사항 : Postfix를 설정하는 데 문제가 있으며 스크롤을 아래로 스크롤하는 대신 나를 도울 수 있기를 바라는 로그를 쉽게 읽을 수 있도록 노력하고 있습니다.

69
mastofact

당신이 사용할 수있는:

> /var/log/mail.log

파일을 편집하지 않고도 로그가 잘립니다. 또한 공간을 되 찾을 수있는 안정적인 방법이기도합니다. 때로는 사람들이 로그에서 rm을 사용하여 파일 이름을 다시 작성하는 실수를 저지 릅니다. 다른 프로세스에 파일이 열려 있으면 해당 프로세스가 닫힐 때까지 공간을 확보하지 못하고 권한을 엉망으로 만들 수 있습니다.

또한 로그 내용을보고있는 경우 tail 명령을 사용할 수 있습니다.

tail -f /var/log/mail.log

Ctrl-C는 광미를 끊습니다.

84
davey

이것도 사용할 수 있습니다 ..

truncate /opt/package/logs/*.log --size 0

여기서/opt/package/logs의 모든 로그 파일이 비어있게됩니다.

18
Yasar

예, LogRotate 라는 리눅스 도구가 있습니다.

11
djangofan

로그를 지우는 이유는 공간을 확보하는 것이므로 프로그램 쓰기를 중단하지 않고 cat/dev/null을 사용할 수 있습니다. 절대로 삭제하지 마십시오! 일부 소프트웨어는 다음에 다시 시작할 때까지 작업을 중지하거나 로그를 완전히 무시하여 불만을 제기 할 수 있습니다.

cat /dev/null > /path/to/logfile

# to empty all the logs in a directory
for i in /var/log/*; do cat /dev/null > $i; done
10
Elvis

짧고 호환되는 콘텐츠 덮어 쓰기 : : > /dest/file

그러나 많은 * NIX에는 시스템 호출 truncate (2)와 해당 사용자 공간 도구 truncate도 있습니다.

4
poige

방법은 다음과 같습니다. 이것은 NGINX 전용이므로 모든 로그 파일에서 작동하도록 제거 할 수 있습니다.

# Clear nginx logs.
# @usage delnginxlogs
function delnginxlogs() {
  echo "--------------- ⏲  Clearing logs... ---------------"

  # Clear logs.
  for i in /var/log/nginx/*; do cat /dev/null > $i; done

  echo "--------------- ⏲  Deleting .gz log files... ---------------"

  # Delete .gz files.
  find /var/log/nginx -type f -regex ".*\.gz$" -delete

  echo "--------------- ???? DONE: NGINX logs cleared ... ---------------"
}
1
Ahmad Awais

파일을 정리하기 전에 파일을 유지하려면 다음을 수행하십시오.

cp /var/log/mail.log /var/log/mail.log.1 && echo -n "" > /var/log/mail.log

로그에서 특정 문자 나 이메일을 검색하려면 grep을 사용할 수 있습니다. 메일 사용에 대한 그래픽을 유지하려면 AWStats를 사용할 수 있습니다.

1
ghm1014