Warum kann ich den Job "wget" nicht sehen, wenn ich ihn im Hintergrund ausführe?

8

Ich benutze den wgetBefehl im Hintergrund so

wget -bq

und es druckt

Fortsetzung im Hintergrund, S. 31754.

Wenn ich den Befehl jobseingebe, wird mein Job nicht angezeigt (obwohl der Download noch nicht abgeschlossen ist).

Floyd
quelle
2
Sie können es sehen mitps -p 31754
pLumo
Jjobsfunktioniert nur für die (diese) Shell-Jobsteuerung (nämlich &Annotation, Strg-Z oder bgKommamd). Allgemeine Prozessauflistung ( ps -awird es zeigen)
eckes

Antworten:

19

Bei der Verwendung wgetmit -boder --backgroundes setzt mich in den Hintergrund von dem aktuell Shell disassociating ( durch einen untergeordneten Prozess und zur Einstellung der Eltern abzweigt ). Da es nicht die Shell ist, die es als asynchronen Job in den Hintergrund stellt, wird es bei Verwendung nicht als Job angezeigt jobs.

wgetVerwenden Sie, um als asynchroner (Hintergrund-) Job in der Shell ausgeführt zu werden

wget ... URL &

Wenn Sie dies tun, können Sie zusätzlich Ausgang zu einem gewissen Datei umleiten (die wgetautomatisch mit tut -b), oder es verwerfen durch Umleitung auf /dev/null, oder die Nutzung -qoder --quiet.

Kusalananda
quelle
1
es gabelt ein Kind und der Elternteil verlässt
user2497
@ user2497 Ja, siehe aktualisierte Antwort.
Kusalananda
6

Weil es sich selbst in den Hintergrund stellte. Verwenden &Sie diese Option, um bash anzuweisen, es in den Hintergrund zu stellen und es in die Liste der Jobs von bash aufzunehmen.

Hintergrund und Jobkontrollliste sind nicht identisch. Bash fügt alle seine Hintergrundprozesse (standardmäßig) in seine Jobsteuerungsliste ein, aber Prozesse können im Hintergrund ausgeführt werden, ohne in die Liste aufgenommen zu werden. Nur bash kann Jobs in seine Liste aufnehmen.

Die -bgOption kann Vorteile haben (ich weiß nicht was). Wenn Sie beispielsweise sshdie Hintergrundoption verwenden, wird sie nach der Eingabe eines Kennworts in den Hintergrund gestellt.

Strg-Alt-Delor
quelle
3
Es ist -bq, dh -bund -qnicht -bg.
Kusalananda
2

Der Prozess mit pid 31754 existiert; Wenn Sie eingeben, ps -e |grep 31754 aber da es sich nicht um einen Job handelt, der wieder in den Vordergrund verschoben werden kann, wird er vom Befehl jobs nicht angezeigt. wget -bqSenden Sie die Ausgabe automatisch ohne Optionen in den Hintergrund, um sie wieder in den Vordergrund zu verschieben.

Dasel
quelle
psverfügt über eine -pOption, mit der eine bestimmte PID abgefragt oder verwendet werden kann pgrep wget.
Kusalananda
0

Normalerweise tail wget-logsehe ich die letzten Zeilen des Protokolls, um mir eine Vorstellung vom Status des Downloads zu geben.

cooljay
quelle