Я выполняю длительный процесс на узле node-red-node-daemon
на Node-RED
.Однако при каждом повторном развертывании проекта он создает новый экземпляр сценария, который работал (он не уничтожает уже запущенный экземпляр и создает новый при развертывании, поэтому, если я разверну свой проект 10 разОС будет запускать 10 экземпляров моего скрипта).
Насколько я понял из этого узла, он должен был убить скрипт, когдаNode-RED
закрывается (я предполагаю, что закрытие Node-RED
- это то, что делается при развертывании).Но это не работает, как я ожидал.Я что-то пропустил?Можно ли завершить длительный процесс на Node-RED
во время повторного развертывания?То есть мы не создаем его новые экземпляры?
РЕДАКТИРОВАТЬ
Долгосрочный процесс, который я сказал в своем вопросе, - это скрипт bash, выполняющийinotifywait
команда на машине с Linux (вы не можете использовать ее в 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
Идея заключается в том, что при каждом перемещении нового файла в определенную папку сценарий выводит полный путь к файлу (и, следовательно, отправляетэто к следующему узлу как msg.payload на Node-RED).Подводя итог, можно сказать, что проблема создания новых экземпляров в этом сценарии заключается в том, что он будет работать так, как если бы 10 файлов с одинаковыми именами поступали в отслеживаемую папку после ее 10-кратного развертывания ...