Ubuntu
Upstart 輸出預啟動腳本內容
基於控制 nginx 實例的 Ubuntu init.d 腳本的內容,位於: http : //wiki.nginx.org/Nginx-init-ubuntu 我正在嘗試更新 Upstart 版本,位於:http:// wiki.nginx.org/Upstart進行配置語法檢查。
基本上它需要做的是,呼叫:
$DAEMON -t -c $NGINX_CONF_FILE
這應該輸出有關配置文件語法錯誤的錯誤消息。
我嘗試了以下但沒有成功:
# nginx description "nginx http daemon" author "George Shammas <georgyo@gmail.com>" start on (filesystem and net-device-up IFACE=lo) stop on runlevel [!2345] env DAEMON=/opt/nginx/sbin/nginx env PID=/var/run/nginx.pid env NGINX_CONF_FILE=/etc/nginx/nginx.conf console output expect fork respawn pre-start script $DAEMON -t -c $NGINX_CONF_FILE if [ $? -ne 0 ] then exit $? fi end script post-stop script start-stop-daemon --stop --pidfile $PID --name nginx --exec $DAEMON --signal TERM end script exec $DAEMON -c $NGINX_CONF_FILE
這裡的問題是,即使使用“控制台輸出”節,它也不會將輸出放到控制台。
我在這裡錯過了什麼嗎?
當它無法啟動時我得到的很簡單:
root@localhost:/# start nginx start: Job failed to start
這裡沒有簡單的答案。不幸的是,如果您將語法檢查的輸出通過管道傳輸到類似記錄器的東西,您會失去返回程式碼以檢查它是否失敗..所以您必須這樣做:
syntax_check_output=`mktemp /tmp/nginx.check.XXXXXX` if $DAEMON -t -c $NGINX_CONF_FILE > $syntax_check_output 2>&1 ; then rm -f $syntax_check_output else logger -t nginx -p daemon.err < $syntax_check_output rm -f $syntax_check_output exit 1 fi
(順便說一句,您應該注意所有新貴腳本部分都使用“set -e”執行,因此原始範例中的 if 語句將不會被執行。只要命令以非零值退出,shell 就會退出。 )