Node.js 循环未在Bash中完成
我正在制作这个Bash脚本(见下文),它应该检查Node.JS文件是否正在运行,如果没有,它将重新启动文件并继续循环。但是,当它尝试运行该文件时,它不会继续 这将在Ubuntu上运行,但我现在正在Windows10上检查。我知道我可以用Nodemon,但我更喜欢用这个 如果没有Node.js 循环未在Bash中完成,node.js,bash,ubuntu,Node.js,Bash,Ubuntu,我正在制作这个Bash脚本(见下文),它应该检查Node.JS文件是否正在运行,如果没有,它将重新启动文件并继续循环。但是,当它尝试运行该文件时,它不会继续 这将在Ubuntu上运行,但我现在正在Windows10上检查。我知道我可以用Nodemon,但我更喜欢用这个 如果没有节点%NAME,循环运行正常-所以我猜这可能是因为一旦它尝试启动node.JS,它就不会继续,或者我用Bash运行node时出错了,不管我如何看待另一个问题,似乎我做得对 任何帮助都将不胜感激。谢谢 代码: 对于研究案例
节点%NAME
,循环运行正常-所以我猜这可能是因为一旦它尝试启动node.JS,它就不会继续,或者我用Bash运行node时出错了,不管我如何看待另一个问题,似乎我做得对
任何帮助都将不胜感激。谢谢
代码:
对于研究案例 避免节点阻塞脚本 您需要做的只是添加&
node $NAME &
话虽如此,还有一个更好的选择,那就是保持
脚本运行我推荐您作为@P Burke提到阅读PM2
脚本将一直阻止,直到
节点退出,此时它将在节点启动后继续。循环本身永远不会退出。也许您想在后台运行节点
,然后使用中断
?是一个有效的流程管理者,为什么不使用它来避免麻烦呢?@PBurke我可以,但是1。这是我在bash方面获得一些经验的东西,所以在任何需要它的地方,我都可以。2.这是我正在做的一个项目。所以可能会在某个时候使用它,但谢谢你。
node $NAME &
#!/bin/bash
NAME="Run.js"
RUN=`pgrep -f $NAME`
while true
do
if [ "$RUN" == "" ]; then
echo "Script is not running"
node $NAME &
else
echo "Script is running"
fi
sleep 5
done