it-swarm.com.de

Wie kann ich die Prozess-ID des Befehls in einem Bash-Skript ausführen lassen?

Ich habe ein Skript, ich möchte 2 Programme gleichzeitig ausführen. Eines ist ein Programm und das andere ist cpulimit. Ich möchte das C-Programm im Hintergrund zuerst mit "&" starten und dann die PID des C-Programms erhalten Übergeben Sie es an cpulimit, das ebenfalls mit "&" im Hintergrund ausgeführt wird.

Ich habe versucht, dies unten zu tun, und es startet nur das erste Programm und es beginnt nie cpulimit.

Ich führe dies auch als Startskript als root aus und nutze systemd in Arch Linux.

#!/bin/bash

/myprogram &

PID=$!

cpulimit -z -p $PID -l 75 &

exit 0
15
Skilo Skilo

Ich denke, ich habe das jetzt gelöst. Demnach hier: link Ich muss die Befehle wie folgt zusammenfassen (Befehl), um eine Sub-Shell zu erstellen.

#!/bin/bash

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

exit 0
5
Skilo Skilo

Ich habe das gerade beim googeln gefunden und wollte etwas hinzufügen.

Während Ihre Lösung zu funktionieren scheint (siehe Kommentare zu Subshells), müssen Sie in diesem Fall die PID nicht erhalten. Führen Sie den Befehl einfach so aus:

cpulimit -z -l 75 myprogram &
2
chris137