
Ich führe mehrere durch Semikolon getrennte Bash-Befehle aus:
% long-running-command-I-want ; another-command-I-dont
Der long-running-command-I-want
läuft noch; natürlich gibt es noch keins pid
von another-command-I-dont
. Ich möchte den präventiv beenden/abbrechen/an der Ausführung hindern, another-command-I-dont
ohne den zu beenden, long-running-command-I-want
auf den ich schon eine Weile warte. Kann ich das tun? Und wenn ja, wie?
Antwort1
Wenn Sie eine andere Shell ausführen, können Sie die PID der Shell herausfinden, bash
auf der das Programm ausgeführt wird, das Sie fortsetzen möchten. Wenn dies der Fall ist bashPID
, senden Sie ein Interrupt-Signal mit:
kill -2 bashPID
Dadurch wird die Ausführung der restlichen Befehlszeile gestoppt.
Optional können Sie in der ursprünglichen Shell Ctrl- eingeben z, um das laufende Programm vorübergehend im Hintergrund anzuhalten. Dies würde mit dem Rest der Befehlszeile fortfahren, die durch das Interrupt-Signal geleert wird. Sie können das laufende Programm dann mit fg
oder fortsetzen bg
, je nachdem, ob Sie es im Vordergrund oder im Hintergrund fortsetzen möchten.