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.
quelle
Wenn Sie wirklich versuchen, ein GUI-Programm vom Terminal aus zu starten, bevorzugen Sie möglicherweise etwas wie
Das wird es im Hintergrund starten, da es das Terminal für nichts benötigt. Dies kann auch für die
node.js
Anwendung 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
.quelle
disown
ist 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 dennode.js
Dienst würden Sie beispielsweise die Prozess-ID des Jobs notieren, die die Shell beim Starten druckt, undkill
diese 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 Beendennode.js
, dass aus irgendeinem Grund vom Terminal gelesen wird. Ich würde die Details dort nicht kennen, ich weiß nicht, was es läuft.Nachdem Sie einen Prozess (Job) gestartet haben, können Sie noch andere Dinge tun. Vielleicht möchten Sie diese als Spickzettel aufschreiben.
jobs
Zeigt alle Hintergrundjobs auf dem Terminal anbg
Lässt den zuletzt angehaltenen Job im Hintergrund fortgesetzt werdenfg
Gibt den letzten Pausenjob in den Vordergrund zurückSie 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.txt
Sie ihn einfach wie folgt einprocess > out.txt
. Dadurch werden alle Standardausgaben an die Dateiout.txt
gesendet (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.quelle
process >& /dev/null &
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.
quelle