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

표준 출력 및 표준 오류를 로그 파일에 기록하는 프로세스가 실행 중입니다 /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
}



답변

설명하는 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.


답변