Назад | Перейти на главную страницу

Почему мой сценарий bash завершается?

У меня есть приложение узла, работающее на моем сервере хостинга Linux.

Иногда приложение дает сбой, и мне нужно его перезапустить, поэтому я вхожу в систему и набираю следующие команды:

pkill node
cd public_html/n49900_dpndev
node server.js &

И приложение снова запускается.

Теперь я хотел бы поместить это в сценарий, поэтому мне просто нужно запустить сценарий (или, например, выполнить его из сценария PHP).

Я создал файл "startnode":

#!/bin/bash
pkill node
cd public_html/n49900_dpndev
node server.js &

Я изменил разрешения с помощью chmod 755 startnode.

Но когда я выполняю это с ./startnode он отвечает:

Прекращено

Что мне нужно сделать, чтобы команды, которые я набираю вручную, также работали в сценарии bash?

Имя вашего скрипта содержит "узел" в имени и pkill node наверное убивает это.

С помощью pkill -x node убивать только процессы, чье имя в точности совпадает с "узлом", может вам больше по душе. Или даже pkill -f -x "node server.js" чтобы убить процесс с точной полной командной строкой.

pkill убивает каждый процесс, запущенный программой с именем, содержащим слово node даже ты сценарий

Переименуйте ваш скрипт на любое имя, не содержащее слова node