Kill
這個 logrotate nginx 配置有什麼作用?
在我
/etc/logrotate.d/nginx
看到的,/var/log/nginx/*.log { daily missingok rotate 52 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript }
postrotate 腳本看起來像是在殺死 nginx 程序,這沒有意義,所以我一定是錯的。
它在做什麼?
預設情況下,USR1 信號會終止程序,但它的目的是處理程序認為有用的任何事情。每個程序都定義了它對 USR1 和 USR2 的作用;對於 Nginx,這是重新打開日誌文件(用於日誌輪換)並執行一個新實例(用於升級)。
按照慣例,大多數守護程序通過重新載入其配置文件來響應 HUP 信號。Nginx 遵循這個約定。HUP 信號的最初意圖是向互動程序發出會話結束的信號(調製解調器掛斷 - 使用者離開了,繼續沒有意義),但該含義不適用於守護程序。