
/etc/crontab
매일 cronjob이 오전 4시 25분에 실행되도록 파일 에 다음 항목이 있습니다 . daily
이 파일 내부에 대한 유일한 항목은 다음과 같습니다 .
25 4 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
내 내용은 /etc/cron.daily/
다음과 같습니다 logrotate
.
# ls -l /etc/cron.daily/
...
-rwxr-xr-x 1 root root 377 Jan 21 2019 logrotate
다음은 logrotate 구성입니다./etc/logrotate.d/
/var/log/remote/custom/*.log
{
rotate 180
daily
missingok
notifempty
compress
delaycompress
sharedscripts
# force rsyslog to refresh file descriptor
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
/var/lib/logrotate/status
의 내용을 검사할 때 로그 파일이 오전 4시 25분이 아닌 자정에 회전되는 것으로 나타나는 이유는 무엇입니까 ?
"/var/log/remote/custom/cust.log" 2020-11-4-0:0:39
운영 체제: Ubuntu 20.04 LTS
커널:Linux 5.4.0-40-generic
답변1
anacron이 /etc/cron.daily(및 기타)를 평가할 시기를 찾는 /etc/anacrontab을 간과한 것 같습니다.
또한 내가 systemd를 멀리하는 많은 이유 중 하나입니다. /etc/cron.daily/logrotate의 첫 번째 줄을 확인하세요.
# less -X /etc/cron.daily/logrotate
#!/bin/sh
# skip in favour of systemd timer
if [ -d /run/systemd/system ]; then
exit 0
fi
답변2
을 위한데비안사용자라면 6.25(/etc/crontab)에서 실행되고 있다고 생각할 수 있지만 지난 몇 버전 이후로 00.00에서 실행되고 구성되어 있습니다.체계화된!
이전 /etc/crontab :
25 6 * * * 루트 테스트 -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
systemd의 실행 시간을 변경하려면 다음 파일을 편집해야 합니다. /etc/systemd/system/timers.target.wants/logrotate.timer
기본적으로는 다음과 같습니다.
[Timer]
OnCalendar=daily
매일 6.20에 실행하려면 다음을 수행하십시오.
[Timer]
OnCalendar=*-*-* 6:20
(그런 다음 시스템을 재부팅했지만 꼭 필요한지는 잘 모르겠습니다!)
답변3
편집할 때 매우 주의하십시오 /etc/systemd/system/timers.target.wants/logrotate.timer
. 해당 파일은 에 대한 심볼릭 링크입니다 /lib/systemd/system/logrotate.timer
.
파일이 실수로 심볼릭 링크에서 일반 파일로 변경되면 타이머가 무시됩니다. 예를 들어 임베디드 시스템용 설치 스크립트의 일부로 sed를 사용하여 이 파일을 편집하면 타이머가 무시됩니다. 내가 어떻게 아는지 물어보세요!