Perché non riesco a vedere il lavoro "wget" quando lo eseguo in background?


8

Uso il wgetcomando in background in questo modo

wget -bq

e stampa

Continuando in background, pid 31754.

Ma quando digito il comando jobs, non vedo il mio lavoro (anche se il download non è finito).


2
Puoi vederlo conps -p 31754
pLumo

Jjobsfunziona solo per il (questo) controllo del lavoro di shell (vale a dire &annotazione, ctrl-z o bgcommamd). Elenco generale dei processi ( ps -alo mostrerà)
controlla l'

Risposte:


19

In caso di utilizzo wgetcon -bo --backgroundmette se stessa in secondo piano dal dissociare dalla shell corrente ( da sborsare fuori un processo figlio e che chiude il genitore ). Poiché non è la shell che lo mette in background come lavoro asincrono, non verrà visualizzato come lavoro quando lo si utilizza jobs.

Per eseguire wgetcome processo asincrono (in background) nella shell, utilizzare

wget ... URL &

Se lo fai, potresti anche voler reindirizzare l'output su un file (che wgetfa automaticamente con -b), o scartarlo reindirizzando a /dev/null, o usare -qo --quiet.


1
biforca un figlio e il genitore esce
user2497

@ user2497 Sì, vedi la risposta aggiornata.
Kusalananda

6

Perché lo mette in secondo piano. Utilizzare &per dire a bash di metterlo in background e di inserirlo nell'elenco dei lavori di bash.

L'elenco dei controlli in background e dei lavori non è lo stesso. Bash inserisce tutti i suoi processi in background nell'elenco di controllo dei processi (per impostazione predefinita), ma i processi possono essere sottoposti a background senza essere inseriti nell'elenco. Solo bash può inserire lavori nella sua lista.

Potrebbero esserci dei vantaggi con l' -bgopzione (non so cosa). Ad esempio ssh, l'opzione in background, inserisce in background dopo aver richiesto una password.


3
È -bq, cioè -be -qnon -bg.
Kusalananda

2

Il processo con pid 31754 esiste; se si digita ps -e |grep 31754 ma poiché non è un lavoro che può essere spostato di nuovo in primo piano, non viene visualizzato dal comando jobs. wget -bqinvia automaticamente l'output sullo sfondo senza opzioni per spostarlo di nuovo in primo piano.


psha -pun'opzione che può essere usata per interrogare un PID specifico, oppure si può usare pgrep wget.
Kusalananda

0

Di solito uso tail wget-logle ultime righe del registro per darmi un'idea dello stato del download.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.