gpt4 book ai didi

linux - Init.d 脚本不启动或停止只打印帮助信息

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:50 25 4
gpt4 key购买 nike

我已经尝试为 uwsgi emperor 编写一个自定义的 upstart 脚本,但它似乎没有启动 uwsgi 并且只说 Usage:/etc/init.d/uwsgi {start|stop|reload} 当我尝试使用“service uwsgi start”运行它时。

谁能告诉我哪里出错了。下面的代码片段来 self 的部署 shell 脚本:

cat <<EOF >/etc/init.d/uwsgi
#!/bin/bash
daemon=\$APPVENV/bin/uwsgi
args="--emperor \$APPCONF/uwsgi/app.ini --daemonize /var/log/emperor.log --emperor-pidfile \$APPDIR/emperor.pid --gid `id -g \$APPUSER`"
pid=\$APPDIR/emperor.pid
case "$1" in
start)
echo "Starting uwsgi"
start-stop-daemon -m -p \$pid --start --exec \$daemon \$args
;;
stop)
echo "Stopping script uwsgi"
start-stop-daemon --signal INT -p \$pid --stop \$daemon \$args
;;
reload)
echo "Reloading conf"
kill -HUP \$(cat \$pid)
;;
*)
echo "Usage: /etc/init.d/uwsgi {start|stop|reload}"
exit 1
;;
esac
exit 0
EOF

chmod u+x /etc/init.d/uwsgi
update-rc.d uwsgi defaults
service uwsgi start

最佳答案

使用以下内容。密切注意哪些 $ 我转义了,哪些没有转义。

cat <<EOF >/etc/init.d/uwsgi
#!/bin/bash
daemon="$APPVENV/bin/uwsgi"
args=( --emperor "$APPCONF/uwsgi/app.ini"
--daemonize /var/log/emperor.log
--emperor-pidfile "$APPDIR/emperor.pid" --gid \$(id -g "$APPUSER")
)
pid="$APPDIR/emperor.pid"
case "\$1" in
start)
echo "Starting uwsgi"
start-stop-daemon -m -p \$pid --start --exec \$daemon \$args
;;
stop)
echo "Stopping script uwsgi"
start-stop-daemon --signal INT -p \$pid --stop \$daemon \$args
;;
reload)
echo "Reloading conf"
kill -HUP \$(< \$pid)
;;
*)
echo "Usage: /etc/init.d/uwsgi {start|stop|reload}"
exit 1
;;
esac
exit 0
EOF

chmod u+x /etc/init.d/uwsgi
update-rc.d uwsgi defaults
service uwsgi start

APPDIR 等变量,根据您之前的问题,用于配置实际写入磁盘的内容,因此您不对它们进行转义,以便在 /etc/init.d 时扩展它们。 d/uwsgi 写成。

daemon$1 和命令替换 $(id -g "$APPUSER") 等变量旨在在以下情况下扩展初始化脚本运行,因此您希望在脚本中出现文字字符串$daemon,而不是$daemon 的值(这可能是undefined) 当 uwsgi 被写入时。

关于linux - Init.d 脚本不启动或停止只打印帮助信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24206108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com