gpt4 book ai didi

bash - 无法停止我在 Debian squeeze 上的启动脚本

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:00 24 4
gpt4 key购买 nike

我正在尝试为我正在执行的 Web 应用程序设置部署,但启动脚本遇到一些问题。这是我到目前为止所做的:

#!/bin/bash
DIR=/webroot/webapp.com
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NODE_PATH=/usr/local/lib/node_modules
NODE=/usr/local/bin/node

test -x $NODE || exit 0

function start_app {
NODE_ENV=production nohup "$NODE" "$DIR/production/WebApp/server.js"
echo $! > "$DIR/production/WebApp/webapp.pid"
}

function stop_app {
kill `cat $DIR/production/WebApp/webapp.pid`
}

case $1 in
start)
start_app ;;
stop)
stop_app ;;
restart)
stop_app
start_app
;;
*)
echo "usage: webapp.com {start|stop}" ;;
esac
exit 0

我可以这样启动它,但是当我尝试停止它时,我得到了这个:

ssh mydomain.com /etc/init.d/webapp.com restart
cat: /webroot/webapp.com/production/WebApp/webapp.pid: No such file or directory
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

最佳答案

这里的问题是,您的 webapp.pid 文件直到您的 Node 应用程序退出后才真正被创建,并且在您的启动脚本杀死它之前它不会退出,它可以'没有 .pid 文件就不行。

您需要在后台运行 Node ,以便创建 .pid 文件的代码实际上有机会运行:

NODE_ENV=production nohup "$NODE" "$DIR/production/WebApp/server.js" &

关于bash - 无法停止我在 Debian squeeze 上的启动脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11751889/

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