Kann ich einen Teil eines laufenden, durch ; getrennten zusammengesetzten Bash-Befehls ändern oder präventiv beenden?

Kann ich einen Teil eines laufenden, durch ; getrennten zusammengesetzten Bash-Befehls ändern oder präventiv beenden?

Ich führe mehrere durch Semikolon getrennte Bash-Befehle aus:

% long-running-command-I-want ; another-command-I-dont

Der long-running-command-I-wantläuft noch; natürlich gibt es noch keins pidvon another-command-I-dont. Ich möchte den präventiv beenden/abbrechen/an der Ausführung hindern, another-command-I-dontohne den zu beenden, long-running-command-I-wantauf 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, bashauf 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 fgoder fortsetzen bg, je nachdem, ob Sie es im Vordergrund oder im Hintergrund fortsetzen möchten.

verwandte Informationen