Я пытаюсь написать скрипт bash, который бы перезапустил мой сервер NodeJS. Вот как я запускаю экран с сервером:
screen -S web-server -d -m node web-server.js
что в итоге (это означает, что это работает):
$ ps -Af | grep node
ubuntu 19504 1 0 10:20 ? 00:00:00 SCREEN -S web-server -d -m sudo node web-server.js
root 19506 19504 0 10:20 pts/2 00:00:00 sudo node web-server.js
root 19507 19506 8 10:20 pts/2 00:00:00 node web-server.js
И вот как я пытаюсь убить этот сервер:
screen -S web-server -X quit
Который фактически заканчивается процессом зомби (ppid сервера изменяется на 1):
$ ps -Af | grep node
root 19506 1 0 10:20 ? 00:00:00 sudo node web-server.js
root 19507 19506 0 10:20 ? 00:00:00 node web-server.js
Как мне убить тот сеанс экрана, включая запущенный процесс внутри?
Для тех из вас, кто может беспокоиться - причина, по которой мне нужен sudo на экране, заключается в том, что я запускаю сервер на порту 80, для которого узлу требуются права суперпользователя.