我用于启动NGiNX的shell脚本无效

时间:2012-08-18 15:02:35

标签: shell ubuntu nginx ubuntu-12.04

我在一本书中找到了这个小shell脚本...... NGiNX只是这个脚本才起作用。因为每次我在/etc/init.d/nginx启动时(这是文件所在的位置)它都会向我发送以下消息:用法:/etc/init.d/nginx {start | stop | restart | reload}

出于测试目的,我添加了回音“$ 1”,当我这样做时它会发送给我:/etc/init.d/nginx start或其他任何东西......

我正在使用Ubuntu 12.04。

#! /bin/sh
# Author: Ryan Norbauer http://norbauerinc.com
# Modified: Geoffrey Grosenbach http://topfunky.com
# Modified: Clement NEDELCU
# Reproduced with express authorization from its contributors
set –e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
SCRIPTNAME=/etc/init.d/$NAME
# If the daemon file is not found, terminate the script.
test -x $DAEMON || exit 0
echo "0"
d_start() {
$DAEMON || echo -n " already running"
}

d_stop() {
$DAEMON –s quit || echo -n " not running"
}

d_reload() {
$DAEMON –s reload || echo -n " could not reload"
}
echo "$1"
case "$1" in
    start)
            echo -n "Starting $DESC: $NAME"
            d_start
            echo "."
    ;;
    stop)
            echo -n "Stopping $DESC: $NAME"
            d_stop
            echo "."
    ;;
    reload)
            echo -n "Reloading $DESC configuration..."
            d_reload
            echo "reloaded."
    ;;
    restart)
            echo -n "Restarting $DESC: $NAME"
            d_stop
            # Sleep for two seconds before starting again, this should give the
            # Nginx daemon some time to perform a graceful stop.
            sleep 2
            d_start
            echo "."
            ;;
    *)
            echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
            exit 3
    ;;
esac

exit 0

1 个答案:

答案 0 :(得分:1)

set –e正在将脚本的参数列表设置为–e。删除该行,脚本将起作用。

编辑:发布的脚本包含set –e(即EN DASH + e),而不是set -e(ASCII连字符/减号+ e)。这导致sh覆盖与–e一起传递的第一个参数,而不是在shell中设置-e选项。用替换-可以解决问题。