Linux

如何檢查 /etc/logrotate.d/syslog 的有效性

  • August 4, 2021

我們要檢查配置文件的有效性 /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遇到執行時問題時返回非零退出程式碼,例如,如果它無法讀取需要旋轉的文件之一。

引用自:https://unix.stackexchange.com/questions/663282