我在一本书中找到了这个小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
答案 0 :(得分:1)
set –e
正在将脚本的参数列表设置为–e
。删除该行,脚本将起作用。
编辑:发布的脚本包含set –e
(即EN DASH + e),而不是set -e
(ASCII连字符/减号+ e)。这导致sh
覆盖与–e
一起传递的第一个参数,而不是在shell中设置-e
选项。用–
替换-
可以解决问题。