/etc/logrotate.d/syslog의 유효성을 확인하는 방법

/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, 메시지 및 기타 로그로 설정합니다.

따라서 파일이 잘못되었을 때 어떤 일이 발생하는지 확인하기 위해 잘못된 구문을 추가합니다.

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를 사용할 때)

답변1

logrotate-d특정 프로필을 기반으로 수행할 모든 작업을 나열하고 오류에 플래그를 지정하는 옵션이 있습니다 .아니요실제로는 아무 작업도 수행하지 않습니다(따라서 파일이 회전되지 않습니다).

구문 분석 문제를 일으키는 구성 파일의 오류(예를 들어불균형 중괄호) 또는 그렇지 않은 경우(예에서와 같이) 0이 아닌 종료 코드가 발생하지 않습니다. error:출력에서 이를 찾아야 합니다 logrotate. 이는 표준 출력이 아니라 표준 오류입니다.

logrotate -d /path/to/configuration |& grep -qv error:

(bash를 가정).

logrotate런타임 문제가 발생하면 0이 아닌 종료 코드를 반환합니다.예를 들어파일 중 하나를 읽을 수 없으면 회전해야 합니다.

관련 정보