it-swarm.com.de

Wie kann ich den aktuell laufenden Linux-Prozess in den Hintergrund stellen?

Ich habe einen Befehl, der Dateien mit git von der Linux-Shell auf einen Remote-Server hochlädt, und es wird viele Stunden dauern, bis er fertig ist.

Wie kann ich das laufende Programm in den Hintergrund stellen? Damit ich noch an Shell arbeiten kann und dieser Vorgang auch abgeschlossen wird?

98
user825904

Unterbrechen Sie den Vorgang mit STRG + Z und setzen Sie ihn dann mit dem Befehl bg im Hintergrund fort. Beispielsweise:

sleep 60
^Z  #Suspend character shown after hitting CTRL+Z
[1]+  Stopped  sleep 60  #Message showing stopped process info
bg  #Resume current job (last job stopped)

Weitere Informationen zur Auftragssteuerung und zur Verwendung von bg finden Sie in der Manpage bash:

JOBKONTROLLE
Wenn Sie das Zeichen suspend eingeben (normalerweise ^ Z, Control-Z), während ein Prozess ausgeführt wird, wird dieser Prozess gestoppt und die Steuerung wird zurückgegeben zu schlagen. Der Benutzer kann dann den Status dieses Jobs mit dem Befehl bg ändern, um ihn im Hintergrund fortzusetzen. A ^ Z wird sofort wirksam und hat den zusätzlichen Nebeneffekt, dass anstehende Ausgaben und Druckaufträge verworfen werden.

bg [ jobspec ...]
Setzen Sie jede angehaltene Jobspezifikation im Hintergrund fort, als wäre sie mit & gestartet worden. Wenn jobspec nicht vorhanden ist, ist die Shell-Vorstellung des aktuellen Jobs gebraucht.

EDIT

Starten eines Prozesses, bei dem Sie das Terminal sogar beenden können und es weiterhin ausgeführt wird

Nohup [command] [-args] > [filename] 2>&1 &

z.B.

Nohup /home/edheal/myprog -arg1 -arg2 > /home/edheal/output.txt 2>&1 &

Um die Ausgabe einfach zu ignorieren (nicht sehr klug), ändern Sie den Dateinamen in /dev/null

Um die Fehlermeldung auf eine andere Datei zu setzen, ändern Sie das &1 zu einem Dateinamen.

188
Ed Heal