구성 파일을 업데이트하는 RPM 패키지가 있으므로 서비스(rsyslog)를 다시 시작해야 합니다. 제가 지원하는 플랫폼에는 시스템 이전 버전(centos6)과 시스템 버전(centos7+)이 포함됩니다. 내 질문은 systemd가 존재하는지 확인하고 이 업데이트를 실행한 후 작업을 다시 시작할 수 있는 가장 좋은 방법은 무엇입니까? 내가 아는 한 이것으로 충분할 것이다:
%posttrans
if test pidof systemd = 1; then
systemctl restart rsyslog
else
service restart rsyslog
fi
답변1
service
systemctl
가능할 때 사용하세요. /bin/systemctl로의 리디렉션에 대한 알림을 인쇄하므로 무시해도 됩니다. 따라서 다음을 사용할 수 있습니다.%posttrans service rsyslog restart
올바른 순서는 질문에 사용한 순서와 다릅니다.
또는 %rhel 매크로를 사용할 수 있습니다.
%posttrans %if 0%{rhel} >=7 systemctl restart rsyslog %else service rsyslog restart %endif
그러나 이는 빌드 시 평가됩니다. 따라서 EL6용 바이너리 패키지 하나와 EL7+용 바이너리 패키지가 하나씩 있어야 합니다.