Wie kann ich einen Befehl, den ich von der Shell aus gestartet habe, ausführen lassen, wenn ich mich von der Shell abmelde?


12

Welche Methoden gibt es, um einen Befehl, der von der Shell gestartet wurde, beim Ausführen zu belassen, nachdem Sie sich von der Shell abgemeldet haben?

Antworten:


11
  • Um die Anwendung in den Hintergrund zu stellen, verwenden Sie &:

    command &
    
  • Wenn Sie das Terminal schließen möchten, und die Anwendung am Laufen zu halten, können Sie mehrere Optionen zur Verfügung : , und .screen Bildschirm installierendtach Installieren Sie dtachnohup

    nohup command &
    
  • Der Bildschirm ist hilfreich, da Sie eine Sitzung neu starten können und das Anhängen auch Spaß macht.

  • Weitere Informationen finden Sie unter den folgenden Links


funktioniert das Hinzufügen eines &am Ende des Befehls nicht auch?
theTuxRacer

2
@ Kaustubh-P mit & ist oft eine gute Gewohnheit, um Terminals über den Befehl 'exit' zu schließen, ohne die Schaltfläche X close zu drücken. & Bewirkt, dass der Befehl im Hintergrund ausgeführt wird. Aber wenn die übergeordnete Shell geschlossen wird. das kann immer noch die Hintergrundprogramme zum Beenden zwingen.
karthick87

5

Verwenden Sie den Befehl nohup wie folgt:

nohup gedit /home/user/file.txt &

So entfernen Sie sogar nohup: Ignorieren von Eingaben und Weiterleiten von stderr an stdout
Amruth A

5

Ein nützlicher (bash?) Befehl ist disown. Das Schöne daran ist, dass es für einen bereits ausgeführten Job funktioniert (Sie lehnen übrigens Jobs ab, nicht Prozesse. Sie müssen also einen ctrl-Z, bgvor dem Ausführen von Disown für Ihren Job ausführen. Stellen Sie sich beispielsweise Folgendes vor:

local % ssh some.where.com
remote % verylongscript.sh

Jetzt ist dir klar, dass du gehen musst, aber nicht willst, dass das Skript beim Beenden getötet wird, also du

ctrl-Z
remote % bg
remote % disown
remote % exit
local %

Jetzt remoteläuft Ihr Skript noch.


1

ich benutze

nohup mycommand &

Um beispielsweise einen virtuellen VirtualBox-Server aufzurufen, gebe ich Folgendes in eine Remote-Shell ein (die ich dann schließe):

nohup VBoxHeadless --startvm "myvm" --vrdp=off &
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.