Verschieben Sie das laufende Programm in Bash in den Hintergrund

10

Wenn ich ein Programm in Bash ausführe, kann ich es durch Drücken von Ctrl+ anhalten Z. Wenn ich das Programm laufen lassen möchte, kann ich den bgBefehl verwenden. Gibt es eine Möglichkeit, das Programm direkt in den Hintergrund zu stellen, ohne tippen zu müssen bg?

Erläuterung : Ich möchte das Programm in den Hintergrund stellen, wenn es bereits ausgeführt wird, ohne es anzuhalten.

Kalle Elmér
quelle
2
Dies ist kein Duplikat. Ich möchte kein Programm laufen lassen, wenn das Terminalfenster geschlossen ist, und ich kann keinen anderen Befehl eingeben. Ich möchte einen Prozess in den Hintergrund stellen, wenn er bereits ausgeführt wird.
Kalle Elmér
1
Ja, dies ist kein Duplikat. Bitte öffnen Sie es erneut.
saji89
Vielen Dank für all die Leute, die bei der Wiedereröffnung geholfen haben. @Kalle, Die Frage ist jetzt wieder geöffnet.
saji89
Danke vielmals! Um tatsächlich eine Antwort auf die Frage zu finden, besteht die einzige Möglichkeit darin, sie zuerst auszusetzen und dann als Hintergrund zu verwenden.
Kalle Elmér

Antworten:

4

Ich glaube nicht, dass es möglich ist, ein laufendes Programm in den Hintergrund zu verschieben (während der Prozess noch läuft).
Es gibt jedoch eine Anwendung namens GNU-Screen , mit der Sie eine beliebige Anzahl von konsolenbasierten Anwendungen - interaktive Befehls-Shells, fluchbasierte Anwendungen, Texteditoren usw. - in einem einzigen Terminal ausführen können.
Hier ist ein schönes Tutorial auf GNU-Screen.
Beachten Sie, dass es nicht genau das tut, was Sie gefragt haben, aber trotzdem den Zweck erfüllt.
Beispiel:
Hier ist die Implementierung dessen, was Sie mit GNU-Screen gefragt haben.

  1. Ausführen screen
    Sie erhalten Details zur Software. Drücken Sie die Eingabetaste.
  2. Jetzt sehen Sie Ihr normales Terminal. Es ist jedoch ein Bildschirmfenster vlc. Geben Sie einen beliebigen Befehl ein . Der Prozess wird in diesem Fenster gestartet.
  3. Um nun ein neues Fenster zu öffnen, geben Sie Ctrl+ Aund dann ein. CHier können Sie einen neuen Befehl ausführen. Beachten Sie, dass der Prozess, den Sie in Fenster 1 gestartet haben, noch ausgeführt wird.
  4. Um sich vom Bildschirm zu lösen, drücken Sie Ctrl+ Aund dann. Sie Dkehren jetzt zu Ihrem alten Termian zurück. Es wird jedoch immer noch ein Prozess ausgeführt, den Sie vom Bildschirm aus gestartet haben.
entzünden
quelle
4

Nach meinem besten Wissen können Sie es ausführen und dann ein & danach wie folgt anhängen :myprogram &

Ich kann mich hier jedoch sehr irren.

[BEARBEITEN]: Wenn Sie dies genauer betrachten, wird die Anwendung geschlossen, wenn Sie das Terminal schließen. Wenn Sie möchten, dass die Anwendung im Hintergrund ausgeführt wird, muss die Anwendung meines Wissens so geschrieben werden, dass das Verhalten des Dämons unterstützt wird.

[EDIT 2]: nohup command & scheint näher an dem zu sein, was Sie erreichen möchten. Nohup ermöglicht die Ausführung einer Anwendung und ignoriert sowohl die Eingabe als auch die Ausgabe in eine Datei, die nohup.outim aktuellen Verzeichnis aufgerufen wird .

NlightNFotis
quelle
Es ist mir egal, ob es geschlossen ist, wenn ich das Terminalfenster schließe. Ich suche nur eine Tastenkombination in Bash, die wie Strg + Z funktioniert, aber den Prozess im Hintergrund laufen lässt, anstatt ihn anzuhalten.
Kalle Elmér
0

Dies ist möglicherweise keine echte Antwort. Ich frage mich, was der Unterschied zwischen Ubuntu und MSYS bei Bash ist.

Ich führe MSYS aus und wenn ich es ausführe Application/Chrome &, geht es sofort zum Hintergrundprozess. Ich kann die MSYS-Bash als nächste Eingabeaufforderung verwenden, um zu blinken.

Und sind dies Fragen, die das laufende Programm mit ähnlichen Absichten in den Hintergrund verschieben ?

Edward Chan JW
quelle