我正在node-red-node-daemon
的节点Node-RED
上执行长时间运行的过程。但是,在我重新部署项目的所有时间中,它都会创建正在运行的脚本的新实例(它不会杀死已经在运行的实例,并且会在部署时创建一个新的实例,因此,如果我将项目部署10次,操作系统将运行我脚本的10个实例。
据我从此节点了解到,应该在Node-RED
关闭时杀死脚本(我假设关闭Node-RED
是在部署时完成的)。但这并没有我预期的那样。我想念什么吗?重新部署时是否有可能杀死Node-RED
上一个长时间运行的进程?所以我们不创建它的新实例吗?
编辑
我在问题中所说的长期运行的过程是在Linux机器上运行inotifywait
命令的bash脚本(在Windows上不能使用它)。这是它的简化版本:
#!/bin/bash
WATCHEDFOLDER='/home/user/watchedfolder'
id=''
event=''
file=''
main () {
if [ "$event" == "MOVED_TO" ]; then
echo -n "$id""$file"
fi
}
inotifyInterruption () {
inotifywait --format="%w^%e^%f" -q -m -e move "$WATCHEDFOLDER" |
while IFS='^' read idLocal eventLocal fileLocal; do
id="$idLocal"
event="$eventLocal"
file="$fileLocal"
main
done
}
inotifyInterruption
这里的想法是,在每次将新文件移动到特定文件夹时,脚本都会打印该文件的完整路径(并因此将其作为Node-RED上的msg.payload发送到下一个节点)。 。综上所述,在此脚本中创建新实例的问题在于,将其部署10次后,将好像有10个同名文件到达监视文件夹一样。