web-dev-qa-db-fra.com

Comment obtenir l'ID de processus de la commande exécuté dans le script bash?

J'ai un script je veux exécuter 2 programmes en même temps, l'un est un programme ac et l'autre est cpulimit, je veux commencer le programme C en arrière-plan d'abord avec "&" puis obtenir le PID du programme C remettez-le à cpulimit qui fonctionnera également en arrière-plan avec "&".

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

J'exécute également ceci en tant que 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
15
Skilo Skilo

Je pense avoir résolu ceci maintenant, selon ce qui suit: link Je dois emballer les commandes telles que celle-ci (commande) pour créer un sous-shell.

#!/bin/bash

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

exit 0
5
Skilo Skilo

Je viens de trouver cela en googlant et je voulais ajouter quelque chose.

Bien que votre solution semble fonctionner (voir les commentaires sur les sous-shell), dans ce cas, vous n'avez pas du tout besoin d'obtenir le pid. Il suffit de lancer la commande comme ceci:

cpulimit -z -l 75 myprogram &
2
chris137