Nachdem ich einen Befehl im Terminal ausgeführt habe, kann ich manchmal keinen anderen ausführen

7

Zunächst einmal entschuldigen Sie die Noob-Frage, ich bin sicher, sie wurde schon einmal gestellt, aber ich habe keine Ahnung, wie ich sie eloquent ausdrücken soll ...

Manchmal, wenn ich eine Anwendung (? Lol) vom Terminal aus öffne / starte / ausführe (nicht sicher, ob der richtige Begriff vorliegt), wie z.

geany filename.php

oder führen Sie ein node.js-Skript aus:

node server.js

Der Befehl wird einwandfrei ausgeführt, aber ich kann keine anderen Befehle ausführen, es sei denn, ich öffne ein anderes Terminal. Mein root@pcname:~$ist weg und wenn ich versuche, etwas anderes einzugeben und die Eingabetaste zu drücken, wird nur die nächste Zeile unterbrochen.

Ich habe festgestellt, dass ich manchmal STRG + D drücken kann und meine Eingabeaufforderung zurückgegeben wird (Entschuldigung, ist die Eingabeaufforderung sogar der richtige Name dafür?).

Könnte jemand bitte erklären, warum dies geschieht und wie ich zur Eingabeaufforderung zurückkehren kann, ohne ein anderes Terminal zu öffnen.

Danke und nochmals Entschuldigung für meinen Noobery.

jreed121
quelle

Antworten:

3

Ah, du drückst den falschen Schlüssel. Es ist Control + C. Dies ist der Befehl, um das Beenden der aktuell im Terminal ausgeführten Anwendung zu erzwingen. Wenn Sie den Befehl beenden, wird auch die entsprechende geöffnete Anwendung beendet. Wenn Sie also mehr Befehle im selben Terminal ausführen möchten, müssen Sie Strg + C drücken, um das Programm zu beenden. Dadurch wird auch geany beendet. Daher ist es am besten, Programme einfach über die GUI auszuführen, wodurch Sie viele Terminalfenster sparen. Sie können auch die Run-Befehlsfunktion von Ubuntu verwenden, indem Sie Alt + F2 drücken und den Befehl eingeben, den Sie ausführen möchten, ohne dass ein Terminal erforderlich ist.

Wilhelm
quelle
Vielen Dank. Wenn ich also möchte, dass die App weiter ausgeführt wird, habe ich mehrere Terminals ... Ich habe nur Geany als Beispiel verwendet, da es manchmal ein Problem auf meiner anderen Box ist, auf der die GUI vorhanden ist, aber auf dem Computer, auf dem meine ausgeführt wird Die App node.js ist eigentlich eine Amazon EC2, also keine GUI.
jreed121
Ja, das stimmt. Sie können mehrere Registerkarten in einem Terminal haben, was Ihrer Gesundheit hilft. Könnten Sie bitte auch auf das grüne Häkchen unter dem Abwärtspfeil oben in meiner Antwort klicken? (Ich bekomme Brownie-Punkte). Vielen Dank.
William
Ja. Sie können mehrere Registerkarten im Terminal haben, was Ihrer Gesundheit helfen kann.
William
Nun, hier ist die andere Sache, ich verwende PuTTy auf meinem Win7-Heimdesktop - gibt es eine Möglichkeit, Tabs in PuTTY zu haben? Oder gibt es einen besseren Client für Windows?
jreed121
1
Ja, Sie können Registerkarten in PuTTY haben, siehe diesen Link: howtogeek.com/howto/the-geek-blog/get-tabs-for-your-putty
William
10

Wenn Sie wirklich versuchen, ein GUI-Programm vom Terminal aus zu starten, bevorzugen Sie möglicherweise etwas wie

geany filename.php &

Das wird es im Hintergrund starten, da es das Terminal für nichts benötigt. Dies kann auch für die node.jsAnwendung funktionieren, wenn das Terminal für nichts erforderlich ist.

Wenn sie beim Schließen des Terminals noch ausgeführt werden, wird dies beanstandet. Wenn Sie wirklich möchten, dass sie nach dem Verlassen des Terminals bleiben, verwenden Sie disown.

Geekosaurier
quelle
Richtig, bis auf die Tatsache, dass Hintergrundoperationen sich nicht beschweren, wenn Sie schließen, wenn Sie Gnome-Terminal verwenden
RobotHumans
Aber was passiert, wenn ich verleugne? Kann ich sie danach nicht mehr aufhalten?
jreed121
Nicht vom Terminal; Aber der Punkt disownist genau dann, wenn Sie nicht mehr möchten, dass das Terminal daran beteiligt ist. Sie müssten einen anderen Mechanismus verwenden, um den Überblick zu behalten. Für den node.jsDienst würden Sie beispielsweise die Prozess-ID des Jobs notieren, die die Shell beim Starten druckt, und killdiese von einem anderen Terminal aus verwenden. (Besser für diesen Fall könnte sein, dass Ihr Dienst eine PID-Datei verwendet oder einen Protokollbefehl hat, der ihn zum Beenden
auffordert
Ich habe es versucht und das & wird nicht funktionieren, da es das node.js-Skript stoppt, aber das Ablehnen funktioniert gut, aber ich bin mir nicht sicher, welche negativen Nachteile es hat ...
jreed121
Das deutet darauf hin node.js, dass aus irgendeinem Grund vom Terminal gelesen wird. Ich würde die Details dort nicht kennen, ich weiß nicht, was es läuft.
Geekosaurier
5

Nachdem Sie einen Prozess (Job) gestartet haben, können Sie noch andere Dinge tun. Vielleicht möchten Sie diese als Spickzettel aufschreiben.

  1. Ctrl+ cBeende den laufenden Prozess (Vordergrundjob)
  2. Ctrl+ zUnterbrechen Sie den laufenden Prozess (Vordergrundjob) und kehren Sie zur Eingabeaufforderung zurück
  3. Typ jobsZeigt alle Hintergrundjobs auf dem Terminal an
  4. Typ bgLässt den zuletzt angehaltenen Job im Hintergrund fortgesetzt werden
  5. Typ fgGibt den letzten Pausenjob in den Vordergrund zurück

Sie können auch bg oder fg mit einer Zahl nach eingeben, z fg 3. Dadurch wird Job Nr. 3 in den Vordergrund gerückt.

Wenn Sie einen Prozess als Hintergrund verwenden möchten und nicht möchten, dass er eine Menge Text ausgibt, setzen > filename.txtSie ihn einfach wie folgt ein process > out.txt. Dadurch werden alle Standardausgaben an die Datei out.txtgesendet (und Ihr Terminal wird nicht überladen).

Wenn Sie Terminals häufig verwenden (wie ich :), möchten Sie das Terminalprogramm auf jeden Fall installieren und sich mit ihm vertraut machen screen. Sie können mehrere virtuelle Terminals in einem Fenster haben. Wenn Sie das Terminalfenster schließen (aus Versehen?), Können Sie es genau dort wieder öffnen, wo Sie zuvor aufgehört haben.

Sepero
quelle
1
Um zu vermeiden, dass die gesamte Ausgabe in eine Datei geschrieben wird, können Sie nach / dev / null umleiten:process >& /dev/null &
steabert
0

Ich benutze Geany für tcl / tk. Wenn Sie geany öffnen, suchen Sie nach dem Symbol "build". Damit können Sie Befehle erstellen, die mit einem Mausklick gestartet werden. Klicken Sie auf das Symbol, legen Sie die Build-Befehle fest und bearbeiten Sie den Ausführungseintrag wie folgt: sh% f && exit Möglicherweise müssen Sie ihn an Ihre Bedürfnisse anpassen. Ersetzen Sie sh durch das, was Ihren Code ausführt. Sie müssen auch 2 Ampere verwenden. Es öffnet ein Terminal und führt das GUI-Skript aus. Wenn ich mit dem Untersuchen der GUI fertig bin, schließe ich das Terminalfenster, das das GUI-Skript beendet. Außerdem werden die Einschränkungen des integrierten Terminals aufgehoben. Aber leider müssen Sie das Terminal immer noch schließen, um eine saubere Tafel zu erhalten.

user116272
quelle