Я делаю этот скрипт Bash (см. ниже), который должен проверять, запущен ли файл Node.JS, если нет — он перезапустит файл и продолжит цикл. Однако, когда он пытается запустить файл, он не продолжается.
Это будет работать на Ubuntu, но я сейчас проверяю это на Windows 10. Я знаю, что мог бы использовать Nodemon, но я бы предпочел использовать его.
Без node %NAME цикл работает нормально, поэтому я предполагаю, что это может быть связано с тем, что, как только он пытается запустить Node.JS, он не продолжается, или я неправильно запускаю узел с Bash, однако я посмотрел на другой вопрос, и вроде правильно делаю.
Любая помощь будет оценена по достоинству. Спасибо
Код:
#!/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
@PBurke Я мог бы, но 1. Это то, что мне нужно, чтобы получить некоторый опыт работы с bash, поэтому в любом случае, когда мне это нужно, я могу. 2. Это проект, над которым я работаю. Так что, вероятно, когда-нибудь воспользуюсь этим, но спасибо.





для учебного дела чтобы узел не блокировал скрипт все, что вам нужно сделать, это добавить &
node $NAME &
с учетом сказанного, есть лучшая альтернатива, чтобы сохранить
запуск скрипта рекомендую как
@P Берк упомянул, что прочитал о PM2 http://pm2.keymetrics.io/
#!/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
Сценарий блокируется до тех пор, пока
nodeне завершит работу, после чего он продолжит работу сразу после запускаnode. Сам цикл никогда выходит. Возможно, вы хотите запуститьnodeв фоновом режиме, а затем использоватьbreak?