logrotate postrotate 似乎没有被执行

logrotate postrotate 似乎没有被执行

我在 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
}

dockersudo服务器上仅允许通过二进制文件。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 继续在旧文件中记录日志。

答案1

这个问题有2个误解:

而 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 单元文件修改后是否需要重新加载?

相关内容