Wenn ich einen Befehl ( make
in einem großen Projekt) über die Shell ausführe , kann ich Strg-Z eingeben, um den Prozess anzuhalten und zur Shell zurückzukehren. Anschließend kann ich fg
den Vorgang fortsetzen.
Ich versuche, ein Shell-Skript zu schreiben, um dies zu automatisieren (insbesondere, um meine CPU-Temperatur alle paar Sekunden zu überprüfen und den Prozess anzuhalten, wenn es zu heiß wird, da mein Computer zu Überhitzung neigt). Mein erster Versuch hat so funktioniert (vereinfacht):
make &
subpid="$!"
sleep 2
# If the CPU temperature is too high...
kill -STOP "$subpid"
sleep 2
# If the CPU temperature has dropped to safe levels...
kill -CONT "$subpid"
wait "$subpid"
Leider hat das nicht funktioniert; Das Senden von SIGSTOP an den Prozess hat ihn nicht angehalten (was sich daran zeigt, dass weiterhin Ausgaben an das Terminal gesendet werden). Ich lief make &
in der Befehlszeile, sendete SIGSTOP und überprüfte den Prozessstatus mit ps
; Es wurde als gestoppt aufgeführt (und als ich SIGCONT sendete, wurde es erneut gestartet), aber es spuckte immer noch Leistung aus und erhöhte meine Kerntemperatur! Das Stoppen mit Strg-Z hatte nie dieses Problem, aber ich weiß nicht, wie man das in einem Skript macht.
Was unterscheidet Strg-Z von kill -STOP
und wie kann ich das Verhalten des ersteren in einem Shell-Skript ermitteln?
make
wird rekursiv ausgeführt. In der Tat denke ich, dass es mehrere Ebenen tief geht.