Comment faire pour obtenir l'id de processus de commande exécutée dans le script bash?

J'ai un script que je veux courir 2 programmes en même temps, l'Un est un programme en c et l'autre est cpulimit, je veux commencer le programme C dans le fond, d'abord avec "&" et ensuite de récupérer le PID du programme C et le remettre à cpulimit qui continuera à fonctionner en arrière-plan avec des "&".

J'ai essayé de faire ce ci-dessous et il commence juste le premier programme et ne démarre jamais cpulimit.

Aussi je suis de l'exécution de cette comme un script de démarrage en tant que root à l'aide de systemd dans arch linux.

#!/bin/bash

/myprogram &

PID=$!

cpulimit -z -p $PID -l 75 &

exit 0
sleep 30 & PID=$! sleep $PID & ps -f Fonctionne très bien pour moi.
Ai-je raison de supposer que $! est l'id de la dernière commande exécutée et en utilisant la variable PID suis-je en mesure d'accéder à cette valeur?
Oui, il est, à mon code de sortie (retours à la ligne (manquants) il y a deux fourches processus. Premier est le sommeil 30 et une seconde de sommeil 17568, qui correspond au pid du premier sommeil. Peut-être que votre myprogram est un shell qui bifurque un autre processus?
Vous pouvez choisir un autre nom de variable. MY_PID=$!
Ce n' cpulimit faire? Ça sonne comme quelque chose qui se termine assez rapidement, probablement qu'elle fonctionne dans le fond et se ferme avant que vous pouvez les vérifier après le script de démarrage est terminée.

OriginalL'auteur Skilo Skilo | 2014-02-03