LINUX.ORG.RU

Запуск нескольких приложений(комманд) в одной сессии терминала

 , , ,


0

1

Вопрос: Как запустить несколько приложений в одной сессии терминала и потом сразу же удобно их всех закрыть?

Описание:

Короче возникла проблема с тем, что хочу открыть одновременно несколько приложений в одном терминале, но есть некоторые проблемы

Приложения эти вешаются на свои порты поэтому при их открытии нужно так же успешно их закрыть

Понятное дело, что нужно пользоваться работами, но я столкнулся с тем, что их не очень удобно закрывать, т.е. я написал скрипт, который запускает мои приложульки в фоне:

#!/bin/sh

make user-service&
make payment-service&
make gateway-service&
ну и так далее

И запускаю через source script.sh, но закрывать эти работы автоматически все сразу выходило не очень. Нужно писать отдельный скрипт, который вычленяет номера работ и киляет их, пытался сделать что-то типо такого(

 jobs | sed 's/\].*//g' | sed 's/\[/%/g' | xargs kill

Но килл говорит, что «%1» процесс не существует, хотя в работах он нет

В инете варики типо jobs -ps или kill $(jobs -p) не работают

Далее пытался через tmux и его сессии зафигачить все, но опять же столкнулся с проблемой. Написал следующий скрипт:

#!/bin/sh

# Init tmux session

tmux new -s auth -d 'make auth-service'
tmux new -s gateway -d 'make gateway-service'
tmux new -s hotel -d 'make hotel-service'
tmux new -s payment -d 'make payment-service'
tmux new -s loyalty -d 'make loyalty-service'
tmux new -s reservation -d 'make reservation-service'

tmux

Все суперски работает, в разных сессиях открывается, НО почему-то когда делаю tmux kill-server или tmux kill-session -a, tmux и все его сессии успешно завершаются, а процессы перекидываются на 1

Мне вариант с tmux очень нравится, потому что удобно можно переключаться между логами разных приложений, поэтому был бы очень рад, если бы кто-нибудь дал совет как избежать перевязку процессов из сессий тмукс на процесс 1

Вариант с докер компоузом не предлагать, т.к. он удобен для развертки, но для отладки вообще не подходит. После каждого изменения приходится ждать, когда он там пересоберется(

так если велосипедишь скриптами попробуй сделать где-то в районе директории tmp файлы с именами, оканчивающимися на «.pid». в эти файлы сохранять нужные тебе номера процессов.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Да в плане велосипедю? Если что-то уже такое есть буду рад полезной ссылке или названии утилиты. Спасибо за идею с пидами

wh75per
() автор топика
Ответ на: комментарий от t184256

Почитал про это подробнее, я уже что-то вроде этого пытался делать, только не добавлял wait. Без wait’а все в работы в фоне вытекало, которые было сложно закрыть

спасибо

в итоге делаю

process1&
process2&

wait

и закрываю все через ^C когда мне нужно

wh75per
() автор топика
Последнее исправление: wh75per (всего исправлений: 1)

jobs -p | xargs --no-run-if-empty kill

Legioner ★★★★★
()
Ответ на: комментарий от Nastishka

Сори, я примерно только представляю, что из себя такое systemd. Мне решение для разработки нужно, запустил там, поотлаживал, вырубил. Systemd в моем представление больше для приложулек - сервисов нужно, которые полезное что-то делают в системе и их нужно запускать на продолжительно время

wh75per
() автор топика
Ответ на: комментарий от wh75per

Вам русским языком сказано прочесть man systemd-run, там есть решение для вашего вопроса, намного более полноценное чем все костыли которые вы сможете придумать. И он у вас уже установлен.

Nastishka ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.