ogregor
@ogregor
арендатор vpn сервера debian

Можно при перехватить вызов команды завершения программы в терминале?

Есть скрипт который запускает несколько программ и в конечном итоге остается доступ через нажатие комбинации ctrl+c только для последней запущенной программы.
к примеру `cd hapi && npm run hapi & cd ../ & node scripts/start.js`
запускается фронтенд сервер и бекенд сервер.
- Когда делается завершение программы, то соответственно завершается только фронтенд сервер
- можно ли каким либо образом перехватить нажатие ctrl+c или ctrl+z и путем вызова соответствующих команд завершить работу и бекенд программы?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@dronmaxman
VoIP Administrator
Жесть. Переделай на systemd.

vim /etc/systemd/system/backend.service

[Service]
ExecStart=/usr/bin/node /opt/backend/server.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=backend
User=root
Group=root
WorkingDirectory=/opt/backend

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload
sudo systemctl start backend.service
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Radjah
@Radjah
Написать два юнита для systemd и не заниматься костылингом, например.

Можно даже через systemd-run запускать, если на раз попробовать.
Ответ написан
Комментировать
Adamos
@Adamos
man kill
Ответ написан
Комментировать
@sash999
просто админ из деревни
Теоретически можно через перехват сигналов с помощью trap. Но правильнее, как уже сказали, сделать всё с systemd.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы