Ubuntu

logrotate postrotate 似乎沒有被執行

  • February 20, 2021

我在 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一直在記錄舊文件。

這個問題有兩個誤解:

一個主要的 FACEPALM 原因:

  • docker execpostrotate腳本中一定沒有-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 單元文件?

引用自:https://serverfault.com/questions/1052265