GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum ist das Wget nach dem Verlust der SSH-Verbindung nicht gestorben?

Ich ssh ed zu meinem Server und führte wget -r -np zzz.aaa/bbb/ccc aus und es fing an zu arbeiten. Dann wurde meine Internetverbindung (bei mir zu Hause) unterbrochen und ich machte mir Sorgen, weil ich annahm, dass wget war hup ped, weil der ssh Die Verbindung ging verloren und daher war das Terminal gestorben. Aber dann ssh ed an meinen Server und stellte fest, dass er noch lief und die Ausgabe in wget.log ablegte und Sachen herunterladen. Kann mir bitte jemand erklären, was hier passiert sein könnte?

Das ist was ps gibt mir:

PID   %CPU %MEM    VSZ    RSS TTY     STAT START   TIME COMMAND
32283  0.6 29.4 179824 147088 ?       S    14:00   1:53 wget -r -np zzz.aaa/bbb/ccc

Was es tut (Fragezeichen) ? bedeuten in der Spalte von tty ?

Akzeptierte Antwort:

Programme (und Skripte) können die meisten Signale ignorieren, mit Ausnahme einiger weniger wie KILL . Das HUP Signal kann abgefangen und ignoriert werden, wenn die Software dies wünscht.

Dies ist von src/main.c des wget Quellen (Version 1.19.2):

/* Hangup signal handler.  When wget receives SIGHUP or SIGUSR1, it
   will proceed operation as usual, trying to write into a log file.
   If that is impossible, the output will be turned off.  */

Etwas weiter unten ist der Signalhandler installiert:

  /* Setup the signal handler to redirect output when hangup is
     received.  */
  if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
    signal(SIGHUP, redirect_output_signal);

Es sieht also wie wget aus nicht ignoriert das HUP Signal, aber es entscheidet sich dafür, die Verarbeitung fortzusetzen, wobei die Ausgabe in die Protokolldatei umgeleitet wird.

In Kommentaren erbeten:Die Bedeutung des ? im TTY Spalte der Ausgabe von ps in der frage steht, dass die wget Prozess ist nicht mehr mit einem Terminal/TTY verbunden. Das TTY ging weg, als die SSH-Verbindung unterbrochen wurde.


Linux
  1. Warum hat der Server meine IP blockiert?

  2. Warum liefert `md5sum` nicht den gleichen Hash wie das Internet?

  3. Warum wird das Bash-Skript nach der Ausführung nicht beendet?

  4. Warum liefert Grep -o -w unter Mac OS X nicht die erwartete Ausgabe?

  5. Warum hat das Entfernen von Iptables den Netzwerkzugriff „unterbrochen“?

Warum nicht Softwarepakete aus dem Internet installieren

Warum eine lange Verzögerung, nachdem der Befehl nicht gefunden wurde?

Wie kann ich eine SSH-Sitzung nach einem Verbindungsverlust wiederherstellen/beenden?

Warum gibt mir das Wgeting eines Bildes eine Datei und kein Bild?

Warum gibt mir rsync über SSH den 10-fachen Durchsatz von SCP?

SSH - So fügen Sie den Befehl -t in die Datei ~/.ssh/config ein