logrotate "후 회전" 구성

logrotate "후 회전" 구성

다음은 두 개의 동일한 logrotate 구성 예입니다. 유일한 차이점은 postroate두 번째 예에서 누락된 블록 입니다.>/dev/null 2>&1 || true

/var/log/nftables.log {
  size +10M
  maxage 30
  sharedscripts
  postrotate
    /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
  endscript
}

/var/log/nftables.log {
  size +10M
  maxage 30
  sharedscripts
  postrotate
    /usr/bin/systemctl kill -s HUP rsyslog.service
  endscript
}


>/dev/null 2>&1 || true두 번째 예가 왜 나쁜지 궁금합니다. (제 생각에는 나쁜 것 같습니다.) 그것이 무엇인지 설명해 주시겠습니까 ?

각 문자의 의미는 >/dev/null다음 2>&1||같습니다 .true

답변1

이것이 기본 bash구문입니다. man bashLinux Shell 튜토리얼이나 책을 읽고 또 읽어야 합니다 .

하지만 여기 있습니다:

>/dev/nullSTDOUT 스트림을 NULL(무한 데이터 싱크) 장치로 리디렉션하고 삭제합니다.

2>&1STDERR 스트림을 STDOUT으로 리디렉션합니다(로 리디렉션됨 /dev/null).

||논리 OR 연산자입니다. 왼쪽 표현식이 ||실패하는 경우에만(0이 아닌 값을 반환 $STATUS) 오른쪽 표현식이 평가되어 ||전체 표현식의 결과로 반환됩니다.

trueSUCCESS 만 반환하는 프로그램입니다 $STATUS.

대체로 다음을 /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true의미합니다.

명령을 실행하고 출력 및 오류 메시지를 삭제합니다. 명령이 성공하면 SUCCESS가 반환됩니다. 명령이 실패하면 SUCCESS가 반환됩니다.

참고: 이 명령은 가 아닌 postrotate으로 해석되므로 bash 확장 기능은 작동하지 않습니다./bin/sh/bin/bash

관련 정보