我想配置碼頭容器的logrotate。我在Docker容器中運行httpd作爲後臺進程,在logrotate之後,我需要重新加載它以使用新的日誌文件。由於可能的停機時間,我不想重啓容器。發送SIGHUP docker kill --signal=HUP <container>
不起作用,因爲我的入口點是不處理信號的bash腳本。我試圖做這樣的logrotate設置:Logrotate postrotate和碼頭執行器奇怪的行爲
...
sharedscripts
postrotate
service httpd reload > /dev/null 2>/dev/null || true
docker exec some-container kill -HUP $(ps -e | awk '{print $1}')>>/tmp/exec-out.log 2>>/tmp/exec-out.log || true
endscript
,但我得到了
kill: sending signal to 30 failed: No such process
kill: sending signal to 31 failed: No such process
kill: sending signal to 32 failed: No such process
kill: sending signal to 33 failed: No such process
kill: sending signal to 34 failed: No such process
kill: sending signal to 35 failed: No such process
kill: sending signal to 36 failed: No such process
kill: sending signal to 37 failed: No such process
kill: sending signal to 38 failed: No such process
我是很新的泊塢窗和Linux,我真的不明白,爲什麼泊塢窗獲取進程ID是不存在。
編輯:我也不想改變bash腳本來捕捉SIGHUP,如果可能的話,而是在logrotate配置中解決問題。