Linux
如何檢查 /etc/logrotate.d/syslog 的有效性
我們要檢查配置文件的有效性
/etc/logrotate.d/syslog
那是因為我們從 bash 腳本中對該文件進行了一些更改
所以我們使用下面的方法來檢查文件
/etc/logrotate.d/syslog
logrotate /etc/logrotate.d/syslog
我舉個例子
more /etc/logrotate.d/syslog /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { size 1024M rotate 5 compress dateext missingok sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
上述文件將日誌輪換設置為 cron 、 maillog 、 messages 等日誌
所以只是為了檢查文件錯誤的情況,然後我們添加錯誤的語法為
more /etc/logrotate.d/syslog /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { size 1024M rotate 5 compress dateext missingok sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript } bug here syntax <----
所以我將重新執行 cli
logrotate /etc/logrotate.d/syslog error: /etc/logrotate.d/syslog:13 unknown option 'bug' -- ignoring line echo $? 0
但是我們可以看到標準輸出仍然是 0 ,
所以我只想知道檢查文件的首選方法是什麼 -
/etc/logrotate.d/syslog
,(當我們在 bash 腳本中使用這個 cli 時)
logrotate
有一個-d
選項,它將根據給定的配置文件列出它將採取的所有操作,並標記任何錯誤,而不實際採取任何操作(因此不會旋轉任何文件)。配置文件中的錯誤,無論它們是否導致解析問題(例如不平衡的大括號)(如您的範例),都不會導致非零退出程式碼。您需要
error:
在輸出中查找logrotate
– 請注意,這是標準錯誤,而不是標準輸出:logrotate -d /path/to/configuration |& grep -qv error:
(假設 bash)。
logrotate
遇到執行時問題時返回非零退出程式碼,例如,如果它無法讀取需要旋轉的文件之一。