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