Цикл не завершается в Bash - PullRequest
0 голосов
/ 24 января 2019

Я делаю этот скрипт 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

1 Ответ

0 голосов
/ 24 января 2019

для учебного примера , чтобы узел не блокировал скрипт, все, что вам нужно сделать, это добавить &

 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...