Linux 我的自定义init shell脚本停止部署脚本
我有一个运行良好的部署脚本。最后,我添加了以下块:Linux 我的自定义init shell脚本停止部署脚本,linux,bash,shell,init,Linux,Bash,Shell,Init,我有一个运行良好的部署脚本。最后,我添加了以下块: 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/
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 -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
cat/etc/init.d/uwsgi
#!/bin/bash
守护进程=$APPVENV/bin/uwsgi
args=“--emperon$APPCONF/uwsgi/app.ini--daemonize/var/log/emperon.log--emperon-pidfile$APPDIR/emperon.pid--gid`id-g$APPUSER`”
pid=$APPDIR/emperor.pid
案件“$1”
开始)
回声“启动uwsgi”
start-stop守护进程-p$pid--start--exec$daemon--$args
;;
(停止)
回显“停止脚本uwsgi”
启动停止守护进程--信号INT-p$pid--停止$daemon--$args
;;
重新加载)
回显“重新加载配置”
压井-HUP$(cat$pid)
;;
*)
echo“用法:/etc/init.d/uwsgi{start | stop | reload}”
出口1
;;
以撒
出口0
EOF
现在,当我运行我的部署脚本时,它被卡在这里,我只看到一个闪烁的光标,它后面没有任何行
我的格式是否有问题,因为我知道使用cat创建文件时对文件的格式、制表方式等非常挑剔。在heredocs中变量仍然被替换,也使用$()进行子shell,这是您在脚本中执行的操作:
kill -HUP $(cat $pid)
您的安装程序尝试对该文件进行cat,其中$pid可能为空,因此它等待来自标准输入的输入。
您希望避开这些“$”以防止扩展,如
\$(cat \$foo)
当然,对于所有这些变量,您也不希望在安装过程中进行扩展。Hi。谢谢你的回复。请你解释一下第一点,我应该怎么处理我的VAR?