我在 Ubuntu 20.04 上有这个配置:
/home/impulse/nginx/log/*/notice.log /home/impulse/nginx/log/*/access.status_ok.log /home/impulse/nginx/log/*/access.status_erro.log {
daily
nomail
dateext
rotate 31
dateyesterday
create root root
notifempty
nocompress
extension .log
# Script to notify nginx that logfile changed.
postrotate
docker exec -ti impulse_web sudo pkill -HUP nginx
endscript
}
docker
二进制文件只允许sudo
在服务器上通过。postrotate
脚本没有被执行。
我的问题是,在哪个帐户下logrotate
运行?而且,我可以记录它的执行以跟踪为什么不应用它吗?
该脚本在使用sudo
.
我当前的日志目录:
-rw-r--r-- 1 root root 3073955 fev 3 11:02 access.status_ok-20210128.log
-rw-r--r-- 1 root root 0 jan 29 00:00 access.status_ok.log
由于access.status_ok.log
为空,logrotate 失败。并且由于postrotate
失败,nginx一直在记录旧文件。
这个问题有两个误解:
HUP
发送到 nginx 的信号使其重新打开日志文件:它没有,USR1
确实,请参见此处:https ://nginx.org/en/docs/control.html一个主要的 FACEPALM 原因:
docker exec
在postrotate
脚本中一定没有-ti
选项,因为它没有在交互式终端中运行.....调试日志
systemd
一直在那里,但它们没有记录在/var/log/syslog
. 以下帮助:https://unix.stackexchange.com/questions/225401/how-to-see-full-log-from-systemctl-status-service
https://askubuntu.com/questions/1083537/how-do-i-properly-install-a-systemd-timer-and-service
修改时是否必须重新加载 systemd 单元文件?