Inhalt
- Hinzufügen des "&" zu Ihrem Befehl
- Hinzufügen des "& disown" zu Ihrem Befehl
- Verwenden von "setsid" in Ihrem Shell-Befehl
- Verwenden von "nohup" mit Ihrem Befehl
- Linux-Grundbefehle, Ubuntu
- Das Dialogfeld "Ausführen"
Ich bin ein Softwareentwickler mit großem Interesse an Datenanalyse und Statistik.
Wenn Sie wie ich sind und es hassen, auf Symbole zu klicken, um Projekte zu starten, starten Sie sie über die Shell. Zum Beispiel öffne ich mein Terminal oder habe ein offenes Terminal und führe den VLC-Befehl aus. Dieser Befehl öffnet den VLC Media Player, wenn Sie ihn installiert haben. Aber jetzt läuft der Prozess im Vordergrund auf Ihrem offenen Terminal. Der Lebenszyklus von VLC ist eng mit dem Terminal verbunden und blockiert andere Aktionen auf dem Terminal. Wenn Sie keinen VLC haben, verwenden Sie zum Beispiel den "Gnome-Rechner".
Wenn Sie den Vorgang auf diese Weise starten, wird die Shell warten (blockieren), bis das Programm beendet oder beendet wird.
Wenn Sie das Terminal schließen, werden Sie vom Terminal aufgefordert: „In diesem Terminal wird noch ein Prozess ausgeführt. Wenn Sie das Terminal schließen, wird es getötet. “ Sie können das Terminal abbrechen oder schließen. Dies liegt daran, dass der von Ihnen gestartete Prozess einige Dinge von der Shell erbt (stdin, stdout usw.). Dadurch wird der Prozess an dieses Terminal gebunden.
Wenn Sie Ihr Terminal schließen, erhält die Shell ein SIGHUP. Es sendet auch ein SIGHUP an den Prozess, den Sie gestartet haben. Dies beendet den Prozess.
Nehmen wir an, Sie möchten den Prozess nicht beenden, aber Sie benötigen oder möchten dieses Terminal nicht mehr. Oder Sie möchten das Terminal weiterhin für andere Aufgaben verwenden.
Hinzufügen des "&" zu Ihrem Befehl
Bei VLC tritt der Prozess in den Hintergrund und Sie können das Terminal nach Belieben weiter verwenden. Sie erhalten erneut eine Shell-Eingabeaufforderung. Oft fahre ich einfach von dort fort oder lösche das Terminal und verwende es für andere Aufgaben oder starte andere Prozesse.
Wenn Sie das Terminal schließen, indem Sie die Schließen-Taste (x) mit der Maus drücken oder Umschalt + Strg + W verwenden, werden alle Prozesse gestoppt, die Sie in diesem Terminal gestartet haben. Dies ist mehr oder weniger das gleiche Problem wie zuvor, aber dieses Mal fordert Sie das Terminal nicht dazu auf, sondern beendet die Programme sofort.
Wenn Sie den Befehl exit im Terminal eingeben oder mit der Tastenkombination Strg + D schließen, wird das Terminal geschlossen, die laufenden Prozesse bleiben jedoch aktiv. Dies war die erste Lösung, die ich versuchte. Ich benutze es immer noch ziemlich oft, aber es gibt andere. Einige haben andere Vorteile oder bieten Ihnen bei Bedarf weitere Optionen.
Hinzufügen des "& disown" zu Ihrem Befehl
In vielerlei Hinsicht ist dies (& verleugnen) scheint dasselbe zu tun wie das Hinzufügen des "&" zum Befehl. Wenn Sie jedoch disown hinzufügen, wird der Prozess aus der Liste der Jobs der Shell entfernt. Der Prozess ist weiterhin mit dem Terminal verbunden, empfängt jedoch nicht das SIGHUP.
Einer der Nachteile von Disown ist, dass es bash-spezifisch ist. Wenn Sie häufig verschiedene Systeme verwenden, die diesen Befehl nicht kennen, kann dies schmerzhaft sein. Da die meisten Befehle nach einer Weile fast reflexartig sind, können Sie diesen Befehl auf Systemen eingeben, auf denen er keinen Nutzen hat. Aber für mich ist das nicht wirklich ein Problem, aber denken Sie daran.
Verwenden von "setsid" in Ihrem Shell-Befehl
Ein mit setsid ausgeführter Befehl wird geöffnet und / oder weist dem Prozess eine neue Sitzungs-ID zu. Diese Sitzungs-ID unterscheidet sich von der Sitzungs-ID des aktuell ausgeführten Terminals. Ein Baum aller Prozesse (die Instanzen der Programme ausführen), die auf Ihrem System ausgeführt werden, zeigt an, dass der Prozess mit einer neuen Sitzungs-ID am Stamm der Baumstruktur beginnt und nicht als Zweig des Terminalprozesses.
Mit setsid können Sie die Ausgabe des Prozesses, den Sie später gestartet haben, nicht überprüfen. Dies ist etwas, das Sie mit etwas wie Nohup und Bildschirm tun können. Mit screen ist eine Prozesssitzung an den Prozess angehängt, und mit nohup können Sie die Ausgabedatei überprüfen. Aber ist das etwas, was Sie für den Prozess brauchen oder wollen, den Sie beginnen? Manchmal ist dies der Fall, aber oft müssen Sie nur das Programm ausführen und das wars.
Sie können es auch in eine Ausgabedatei schreiben lassen, wenn Sie setsid verwenden.
Verwenden von "nohup" mit Ihrem Befehl
Nohup trennt den Prozess vom Terminal. Aufgrund der Unterbrechung wird kein SIGHUP empfangen, weshalb es als nohup bezeichnet wird. Wenn Sie das Terminal schließen, wird der Prozess so lange ausgeführt, bis Sie es schließen.
Wenn das Terminal geöffnet ist, befindet sich der Job immer noch im Vordergrund und unterliegt immer noch der Jobsteuerung der Shell. Wenn Sie also nur nohup verwenden, können Sie dieses Terminal immer noch nicht für andere Aufgaben verwenden. Sie sollten es also mit einem "&" kombinieren.
$ nohup vlc
$ nohup vlc &
Wie Sie sehen, wird die Eingabe geschlossen / ignoriert und die Ausgabe an ein nohup.out angehängt. Durch die Verwendung von nohup.out wird sichergestellt, dass der Prozess seine Ausgabe auch dann noch schreiben kann, wenn das Terminal endet / geschlossen wird.
Linux-Grundbefehle, Ubuntu
Das Dialogfeld "Ausführen"
Sie können sich auch dafür entscheiden, den Prozess nicht von einem Terminal aus zu starten. Es ist möglich, die Eingabeaufforderung zum Ausführen des Dialogfelds zu verwenden. Drücken Sie ALT + F2 und geben Sie den Vorgang ein, den Sie im Dialogfeld starten möchten. Zum Starten des VLC Media Players in unserem Fallbeispiel: vlc.
Dieser Artikel ist genau und nach bestem Wissen des Autors.Der Inhalt dient nur zu Informations- oder Unterhaltungszwecken und ersetzt nicht die persönliche Beratung oder professionelle Beratung in geschäftlichen, finanziellen, rechtlichen oder technischen Angelegenheiten.