Ich weiß bereits, dass das Drücken von ctrl+z
die App stoppt und ich die App dann mit dem bg
Befehl in den Hintergrund senden kann , aber das bedeutet, dass es eine kurze Zeitspanne gibt, in der die App gestoppt wird.
Wie sende ich die App direkt in den Hintergrund, ohne sie anzuhalten?
shell
command-line
background-process
jobs
trusktr
quelle
quelle
ctrl+z
gefolgt von Ausführen des Befehlsbg
. Gibt es eine Tastenkombination, mit der die App in den Hintergrund verschoben werden kann?Antworten:
Das Senden einer Anwendung vom Vordergrund in den Hintergrund erfordert die Zusammenarbeit von Terminal und Shell. Das Terminal kann dies nicht alleine tun, da die Shell die Vordergrundprozessgruppe festlegen muss. Die Shell kann dies nicht alleine tun, da das Terminal den Tastendruck verarbeiten muss (die Shell ist nicht im Vordergrund, daher kann sie keinen Tastendruck empfangen).
Eine gute Annäherung ist, die Anwendung sehr schnell in den Hintergrund zu schicken. Immerhin teilt eine Anwendung die CPU-Zeit mit anderen und eine Pause von einigen Hundertstelsekunden sollte keine Rolle spielen. (Dies gilt für Echtzeitanwendungen. Stellen Sie daher sicher, dass Sie diese im Hintergrund starten.) Ich verwende eine Shell-Bindung für Ctrl+ Z, die den zuletzt vordergründigen Job an den Hintergrund sendet. Auf diese Weise wird durch Drücken von Ctrl+ Z Ctrl+ Zein Auftrag mit minimaler Unterbrechungszeit in den Hintergrund verschoben.
Hier ist meine zsh-Bindung, die auch einen halb getippten Befehl „im Hintergrund“ darstellt, wenn die Befehlszeile nicht leer ist .
Auf Englisch für die Nicht-zsh-Benutzer im Publikum:
Definieren Sie eine Shell-Funktion, die Folgendes ausführt:
Binden Sie diese Funktion an Ctrl+ Z.
Wenn Sie nur das Hintergrundverhalten wünschen, unabhängig davon, ob die Befehlszeile leer ist:
Ich weiß nicht, ob Sie dasselbe in Bash tun können. Es sollte so einfach wie möglich sein
bind -x '"\C-z": bg'
, mit der Ausnahme, dass die Bash das Tty-Stop-Zeichen an der richtigen Stelle belässt, sodass es niemals Ctrl+ Zals Eingabe erhält .quelle
Sie können eine Aufgabe im Hintergrund ausführen, indem Sie eine nachträgliche hinzufügen
&
.Zum Beispiel
tail -f /var/log/messages &
wird die Aufgabe sofort im Hintergrund.Wie immer können Sie sehen, welche Aufgaben Sie mit dem
jobs
Befehl im Hintergrund ausgeführt haben.Dies setzt natürlich voraus, dass Sie den Befehl noch nicht ausgeführt haben.
quelle
ctrl+z
dannbg
über die Kommandozeile ausführen , dass die App im Hintergrund läuft. Zwischen dem Drückenctrl+z
und Ausführenbg
gibt es jedoch einen Zeitraum, in dem die App vollständig angehalten ist. Ich will das nicht. Wie sende ich es sofort in den Hintergrund ?Zum Hintergrund eines Befehls wird ein kaufmännisches Und an den Befehl angehängt.
Wenn es bereits ausgeführt wird, können Sie es nur stoppen und dann im Hintergrund ausführen.
quelle