Бот закрывается, когда окно замазки закрыто - PullRequest
0 голосов
/ 02 декабря 2018

Я создал несогласованного бота и сейчас пытаюсь запустить его на машине с Ubuntu.
Я установил папки бота и NodeJs, вот что я использовал для установки NodeJS:

sudo apt-get install -y nodejs

Затем я использовал cd, чтобы выбрать каталог, и запустил моего бота, используя node index.js

Бот запустился, однако, когда я пошел, чтобы закрыть замазку и оставить ее на VPS, отключение бота.Вот как выглядит каталог.

Root directory tree

Ответы [ 4 ]

0 голосов
/ 02 декабря 2018

Я рекомендую использовать один из этих двух узловых модулей - ForeverJS или PM2 .Я покажу вам, как быстро начать работу с ForeverJS, но PM2 будет очень похожим.

Вы можете легко установить ForeverJS, набрав в своем терминале следующее:

 $ npm install forever -g

Возможно, вам потребуетсяиспользовать SUDO в зависимости от привилегий вашего пользователя для правильной работы.НЕ рекомендуется использовать его в производстве из-за угроз безопасности.

После того, как вы установили компакт-диск в каталог файлов вашего проекта и, как вы ввели «node index.js», вы будете делать нечто подобное с ForeverJS.

$ forever start index.js

Теперь, когда вы выходите из терминала, ваше приложение NodeJS останется запущенным процессом.

0 голосов
/ 02 декабря 2018

Я думаю, что проблема в том, что когда вы запускаете приложение в окне замазки, этот процесс связывается с окном и завершается при его закрытии.

Чтобы избежать этого, вы можете использовать службу хоста, такую ​​какscreen, tmux, nohup, bg и так далее ...
Если вы хотите узнать, какой из них лучший, попробуйте поискать этот вопрос в AskUbuntu Stack Exchange,

Ключевая концепция заключается в том, что вы открываете новое окно с помощью команды tmux (или screen, ...), а затем запускаете своего бота, как вы всегда делаете.Если вы хотите выйти, но продолжить выполнение процесса, вы можете отсоединить сеанс с помощью комбинации клавиш, которая меняется с сервиса на сервис.
Если вы хотите снова получить доступ к этому окну, вы можете запустить команду, которая «восстановит»ваш сеанс, как

tmux list-sessions
tmux attach-session -t 0
0 голосов
/ 02 декабря 2018

Снаряд работает на переднем планеЭто означает, что любые сценарии, которые вы запускаете там, заканчиваются, когда вы заканчиваете сеанс.Простым решением было бы запустить ваш сценарий в фоновом режиме, добавив & после вызова:

node index.js &

Лучшим решением было бы создать службу, которую вы можете попросить, чтобы демон службы запустился для вас.Однако добавление & должно дать вам то, что вы хотите сейчас.

0 голосов
/ 02 декабря 2018

Экземпляр NodeJS завершается при закрытии замазки.Вам нужно что-то, чтобы сохранить экземпляр.Попробуйте:

PM2: http://pm2.keymetrics.io/

или

Навсегда: https://github.com/foreverjs/forever#readme

Рекомендуется запускать экземпляр узла как службу, котораяможет перезагрузиться при запуске.Попробуйте посмотреть на это: https://stackoverflow.com/a/29042953/7739392

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...