Bash 스크립트에서 nginx 구성 파일이 유효한지 테스트하는 방법은 무엇입니까?

Bash 스크립트에서 nginx 구성 파일이 유효한지 테스트하는 방법은 무엇입니까?
  • 우분투16.04
  • 배쉬 버전 4.4.0
  • nginx 버전: nginx/1.14.0

Bash 스크립트에서 Nginx 구성 파일을 테스트하는 방법은 무엇입니까? 현재 쉘에서 -t를 사용하고 있습니다.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

그런데 이걸 스크립트로 하고 싶나요?

답변1

종료 상태를 사용하십시오. nginx 맨페이지에서:

명령이 성공하면 종료 상태는 0이고 명령이 실패하면 1입니다.

그리고로부터http://www.tldp.org/LDP/abs/html/exit-status.html:

$? 마지막으로 실행된 명령의 종료 상태를 읽습니다.

한 가지 예:

[root@d ~]# /usr/local/nginx/sbin/nginx -t;echo $?
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is     successful
0
[root@d ~]# echo whatever > /usr/local/nginx/nonsense.conf
[root@d ~]# /usr/local/nginx/sbin/nginx -t -c nonsense.conf;echo $?
nginx: [emerg] unexpected end of file, expecting ";" or "}" in /usr/local/nginx/nonsense.conf:2
nginx: configuration file /usr/local/nginx/nonsense.conf test failed
1

스크립트된 예:

#!/bin/bash
/usr/local/nginx/sbin/nginx -t 2>/dev/null > /dev/null
if [[ $? == 0 ]]; then
 echo "success"
 # do things on success
else
 echo "fail"
 # do whatever on fail
fi

답변2

@DeeEff 위의 bash 스크립트는 nginx 컨테이너에서 클라우드 가상 머신으로, 클라우드 가상 머신에서 nginx 컨테이너로 작동합니까?

예 sudo 컨테이너 이름 -t

Nginx 서비스를 확인할 수 있는 bash 프로그램/스크립트입니다. "Hello World" 페이지가 반환되면 스크립트나 프로그램은 "OK"를 인쇄하고 코드 0으로 종료되어야 합니다. "Hello World" 페이지가 반환되지 않으면 0이 아닌 코드와 간단한 진단으로 종료되어야 합니다.

관련 정보