用 shell 来验证 nginx 配置文件求助

2016-06-28 18:28:34 +08:00
 holinhot
nginx 重启前进行一次验证
#!/bin/bash
set -x
nginxbin=`/usr/local/nginx/sbin/nginx -t`
if [[ ${nginxbin} == *successful* ]]; then
echo "nginx configure file ok"

else
echo "nginx configure file failed"
fi

根本不行啊
2364 次点击
所在节点    深圳
7 条回复
surfire91
2016-06-28 19:01:38 +08:00
因为 sbin 下的 nginx 输出是到标准错误输出
panzhc
2016-06-28 19:52:37 +08:00
if /opt/meida/nginx/sbin/nginx -t >/dev/null 2>&1; then
echo "nginx configure file ok"
else
echo "nginx configure file failed"
fi
holinhot
2016-06-29 09:03:50 +08:00
@panzhc 谢谢,试了下可用。只是不太理解 /opt/meida/nginx/sbin/nginx -t >/dev/null 2>&1; 这句的含义。把错误和正确的都丢到丢弃怎么判断的
holinhot
2016-06-29 09:34:37 +08:00
@panzhc
现在写好了 不太理解。
if /usr/local/nginx/sbin/nginx -t >/dev/null 2>&1; then
echo "nginx configure file ok"

if /etc/init.d/nginx status >/dev/null 2>&1; then
echo "nginx running"
/etc/init.d/nginx reload
else
echo "nginx is stop"
/etc/init.d/nginx stop
/etc/init.d/nginx start
exit
fi

else
echo "nginx configure file failed"
exit
fi
exuxu
2016-06-29 09:44:32 +08:00
>/dev/null 标准输出到 /dev/null 设备,该设备是『黑洞』
2>&1 将错误输出( 2 )定向到标准输出( 1 )
(:节点是不是搞错了?
holinhot
2016-06-29 12:40:30 +08:00
@exuxu 上面这个脚本正常工作 我测试过
panzhc
2016-07-03 11:38:54 +08:00
程序退出到时候有个代码,可以通过 $? 取到,写成下面也一样
/opt/meida/nginx/sbin/nginx -t >/dev/null 2>&1
if [ $? -eq 0 ] then
echo "nginx configure file ok"
else
echo "nginx configure file failed"
fi
重定向只不过是不想看到多余的输出

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/288920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX