Как получить идентификатор процесса команды, выполненной в bash script?

У меня есть script, я хочу запускать 2 программы одновременно, One - это c-программа, а другая - cpulimit, я хочу запустить программу C в фоновом режиме сначала с помощью & а затем получить PID программы C и передать его в cpulimit, который также будет работать в фоновом режиме с помощью "&".

Я попытался сделать это ниже, и он просто запускает первую программу и никогда не запускает cpulimit.

Также я запускаю это как запуск script как root, используя systemd в arch linux.

#!/bin/bash

/myprogram &

PID=$!

cpulimit -z -p $PID -l 75 &

exit 0

Ответы

Ответ 1

Я думаю, что я решил это сейчас, в соответствии с этим: ссылка Мне нужно обернуть команды, подобные этой (команде), для создания подклассов.

#!/bin/bash

(mygprgram &)
mypid=$!
(cpulimit -z -p $mypid -l 75 &)

exit 0

Ответ 2

Я только что нашел это во время поиска в Google и хотел что-то добавить.

Пока ваше решение работает (см. комментарии о подоболочках), в этом случае вам вообще не нужно получать pid. Просто запустите команду следующим образом:

cpulimit -z -l 75 myprogram &