Задать вопрос
dlinyj
@dlinyj

BASH. Как получить PID запускаемого процесса, чтобы его потом убить?

Встала задача написать скрипт, запускающий подряд несколько процессов. При чём, один из них запускается в фоне, после чего запускаются другие.

Задача, получить PID запускаемого процесса в фоне, чтобы его потом можно было убить. Нужно просто после выполнения других процессов первый завершить.

На сях я представляю как такое реализовать, но вот на BASH нет. Задача сделать кроссплатформенно.
  • Вопрос задан
  • 20979 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
переменная $$ - текущий PID
переменная $! - PID последнего дочернего процесса.

echo "$$" > file.pid

Для других программ
./run_other_program &
echo $!>other_program.pid
Ответ написан
dlinyj
@dlinyj Автор вопроса
Сам спросил, сам ответил.. unix.stackexchange.com/questions/30370/how-to-get-...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@fogree
В Bash существует переменная $!, в которой хранится pid последнего процесса запущенного в фоновом режиме.

Например:

#!/bin/bash

# Запускаем дочерний процесс в фоновом режиме
my_app &

# Сохраняем в переменной APP_PID его pid, так как в будущем переменная $! может перезаписываться
APP_PID=$!

# Делаем что-то ещё…
…

# Убиваем процесс
kill $APP_PID
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы