Допустим, есть такая задача, чтобы процесс не завершался после закрытия консоли и для этого есть утилита Node.js под названием pm2. Ссылка на проект в GitHub.
Использование
Установка
Делается это очень просто:
npm install pm2 -g
Запуск в демон
Запустим какое-нибудь приложение или процесс в демон:
pm2 start app.js
Вывод списка запущенных процессов, остановка, перезапуск и удаление процесса
Весь список процессов в делегировании:
pm2 list|ls
Остановка:
pm2 stop [options] <id|name|all|json|stdin...>
Перезапуск:
pm2 restart [options] <id|name|all|json|stdin...>
Удаление из списка делегирования:
pm2 delete <name|id|script|all|json|stdin...>
Это не полный перечень команд, но этого достаточно, чтобы быстро начать работу.
Реальный пример
Давайте теперь поставим задачу отправить в демон/бакграунд процесс запуска приложения Angular CLI на удаленном или локальном сервере. Для запуска приложения Angular в обычном режиме используется команда:
ng serve --host 0.0.0.0 --port 4200
Нам же нужно, сделать так, чтобы дать этому процессу название и запустить его в процесс делегирования pm2. Для этого создаем файл скрипта оболочки bash с расширением sh. Например, назовем его start.sh и запишем команду запуска процесса:
#!/bin/bash ng serve --host 0.0.0.0 --port 4200
И теперь, чтобы запустить в делегирование pm2 и дать этому процессу названием выполним команду:
pm2 start start.sh --name serverapp
где serverapp — то название, которое мы дали процессу в списке задач делегирования pm2. Все, процесс запущен в демон/бакграунд режиме и чтобы посмотреть данный процесс в списке задач делегирования pm2 выполним команду:
pm2 list
После чего pm2 выведет в консоль список всех процессов, среди которых и наш serverapp: