Unison, systemd 및 logrotate

Unison, systemd 및 logrotate

로컬 및 원격 NAS를 동기화 상태로 유지하기 위해 systemd에서 unison을 실행하고 있습니다.
systemd는 다음과 같이 구성됩니다.

[Unit]
Description=NAS Unision service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=nas
ExecStart=/usr/bin/unison borg

[Install]
WantedBy=multi-user.target

~nas/.unison/borg.prf에서 다음을 실행하도록 unison을 구성했습니다.

# Keep repeating every 15 mins.
repeat=900

# Log to the file which will be rotated by logrotate.
log=true
logfile=/var/log/unison-borg.log

logrotate는 하루에 한 번 로그를 회전하도록 구성됩니다.

# Rotation of the Unision logs
/var/log/unison-borg.log {
    dayly
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 644 nas nas
}

내 문제는 unison이 각 반복에서 로그 파일을 열지 않는 것 같아서 logrotate가 unsion-borg.log.1 로그 파일을 회전할 때 업데이트를 받는다는 것입니다.

unison용 man 파일에는 "SIGUSR1을 보내면 로그 파일이 닫힙니다. 로그 회전을 허용하기 위해 로그 파일이 자동으로 다시 열리고 필요한 경우 생성됩니다."라고 나와 있습니다.

systemd에서는 어떻게 해야 하나요?

답변1

/etc/logrotate.post.daily 스크립트를 작성하십시오.

#!/bin.sh
systemctl status nas-borg | awk '/Main PID/{ print "kill -10 " $3 }' | sh

그리고 postrotate 옵션을 추가하려면 logroate.conf 작업을 수정하세요.

/var/log/unison-borg.log {
    ...
    postrotate /etc/logrotate.post.daily
}

관련 정보