로컬 및 원격 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
}