Ubuntu

Upstart 輸出預啟動腳本內容

  • January 22, 2012

基於控制 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 就會退出。 )

引用自:https://serverfault.com/questions/337198