프로세스가 계속 실행되는 동안 로그 파일 회전


16

표준 출력 및 표준 오류를 로그 파일에 기록하는 프로세스가 실행 중입니다 /var/log/dragonturtle.log. 어쨌든 로그 파일을 회전시키고 프로세스를 종료하지 않고 프로세스가 새 로그 파일에 계속 쓰도록합니까?

현재 발생하는 상황 (아래의 logrotate 구성이 제공됨) :

  • 프로세스 쓰기 /var/log/dragonturtle.log
  • logrotate에 이동 /var/log/dragonturtle.log/var/log/dragonturtle.log.1
  • 프로세스는 계속 쓰기 /var/log/dragonturtle.log.1

내가하고 싶은 일 :

  • 프로세스 쓰기 /var/log/dragonturtle.log
  • 복사본 /var/log/dragonturtle.log을 로테이션/var/log/dragonturtle.log.1
  • 로그 자르기 /var/log/dragonturtle.log
  • 프로세스는 계속 쓰기 /var/log/dragonturtle.log

/etc/logrotate.d/dragonturtle:

/var/log/dragonturtle.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 644 dragonturtle dragonturtle
}

답변:


14

설명하는 logrotate옵션은 copytruncate입니다. 기존 logrotate 구성에이 옵션을 추가하기 만하면됩니다. 다음은 logrotate.conf 매뉴얼에서 발췌 한 것입니다.

   copytruncate
          Truncate  the  original log file in place after creating a copy,
          instead of moving the old log file and optionally creating a new
          one,  It  can be used when some program can not be told to close
          its logfile and thus might continue writing (appending)  to  the
          previous log file forever.  Note that there is a very small time
          slice between copying the file and truncating it, so  some  log-
          ging  data  might be lost.  When this option is used, the create
          option will have no effect, as the old log file stays in  place.

나는 inode 확인과 포크 프로세스를 포함하는 더 복잡한 방법을 제안하려고했지만 이것은 훨씬 간단합니다.
Jeight
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.