Ich habe mich nur gewundert, als ich zum Beispiel startete qtox
mit:
qtox &
Und dann Terminal schließen, qtox
schließt damit. Beim Laufen etherape
mit:
sudo etherape &
Das Schließen des Terminals schließt Etherape nicht und verursacht auch keine Probleme. Und bei verschiedenen Anwendungen gibt es unterschiedliche Verhaltensweisen, manche schließen, wenn Terminal dies tut, andere nicht, wie kommt es? Warum schließen manche, andere nicht? Ich verwende Ubuntu GNOME 15.10 mit GNOME 3.18.
qtox
beenden möchten , wenn Sie das Terminal schließen, können Sie es immer mit ausführennohup qtox &
.Antworten:
Wenn Sie ein Terminal schließen, sendet das Terminal ein SIGHUP-Signal an die Shell. Die Shell sendet ihrerseits ein SIGHUP-Signal an alle untergeordneten Prozessgruppen, einschließlich Hintergrundprozessgruppen.
Wie jeder einzelne Prozess auf das Signal reagiert, hängt ganz vom Prozess ab: Wenn der Prozess keinen Handler für das Signal definiert und dem Kernel (über einen Syscall wie
signal()
odersigaction()
) mitteilt, dass er es verarbeiten möchte, wird der Kernel ausgeführt Der Standard-Handler für das Signal, der im Fall eines SIGHUP-Signals darin besteht, den Prozess zu beenden.Wenn Sie jedoch einen Befehl mit ausführen
sudo
, wird die UID dessudo
Prozesses und seines untergeordneten Prozesses auf0
(root) festgelegt. Im Allgemeinen lehnt0
der Kernel das Signal ab , es sei denn, die UID des Prozesses, der das Signal sendet, ist (root) oder identisch mit der des Zielprozesses (dh, ein Prozess kann keine Signale an einen Prozess senden, der einem anderen Benutzer gehört, es sei denn, der Prozess Senden des Signals gehört root); Aus diesem Grund kann ein vom Benutzer ausgeführter Prozess wie die vom Terminal ausgeführte Bash-Instanz keinensudo
Prozess SIGHUPEN , und das Schließen eines Terminals wirkt sich letztendlich nicht auf einen Prozess aus, mit dem begonnen wurdesudo
.quelle
nohup
vor den Befehlen, die mit SIGHUP enden :) Upgoatedsudo
.sudo
Führt den Befehl nur als anderer Benutzer aus und Sie können kein Signal an die Prozesse anderer Benutzer senden. Sehenman 2 kill
.sudo
eine Art armer Mannnohup
?sudo
mitsudo
für seinenohup
Nebeneffekt betrachtet alle anderen Nachteile.nohup
, es erzeugt nicht benötigtenohup.out
Dateien danach. Verwendedisown
lieber den eingebauten Befehl.