Por que não consigo ver o trabalho "wget" quando o executo em segundo plano?

8

Eu uso o wgetcomando em segundo plano como este

wget -bq

e imprime

Continuando em segundo plano, pid 31754.

Mas quando eu digito o comando jobs, não vejo meu trabalho (embora o download não esteja concluído).

floyd
fonte
2
Você pode vê-lo comps -p 31754
pLumo
Jjobsfunciona apenas para o (este) controle de trabalho do shell ( &anotação, ctrl-z ou bgvírgula). Processo geral listando ( ps -avai mostrá-lo)
Eckes

Respostas:

19

Ao usar wgetcom -bou --backgroundcoloca -se em segundo plano por dissociar a partir do shell atual ( por bifurcação de um processo filho e que encerra o pai ). Como não é o shell que o coloca em segundo plano como um trabalho assíncrono, ele não aparecerá como um trabalho quando você o usar jobs.

Para executar wgetcomo um trabalho assíncrono (em segundo plano) no shell, use

wget ... URL &

Se você fizer isso, poderá redirecionar a saída para algum arquivo (o que wgeté feito automaticamente com -b) ou descartá-la redirecionando para /dev/null, ou usando -qou --quiet.

Kusalananda
fonte
1
bifurca-se uma criança e o pai sai
user2497 11/01
@ user2497 Sim, consulte a resposta atualizada.
Kusalananda
6

Porque ele se coloca em segundo plano. Use &para dizer ao bash para colocá-lo em segundo plano e para colocá-lo na lista de trabalhos do bash.

O plano de fundo e a lista de controle de tarefas não são os mesmos. O Bash coloca todos os seus processos em segundo plano em sua lista de controle de tarefas (por padrão), mas os processos podem ser em segundo plano sem serem colocados na lista. Somente o bash pode colocar trabalhos em sua lista.

Pode haver vantagens na -bgopção (não sei o que). Por exemplo ssh, a opção em segundo plano, coloca-a em segundo plano após solicitar uma senha.

ctrl-alt-delor
fonte
3
É -bq, ou seja , -be -qnão -bg.
Kusalananda
2

O processo com o pid 31754 existe; se você digitar, ps -e |grep 31754 mas como não é um trabalho que possa ser movido para o primeiro plano novamente, ele não será exibido pelo comando jobs. wget -bqenvie automaticamente a saída para o plano de fundo sem opções para movê-la para o primeiro plano novamente.

Dasel
fonte
pstem uma -popção que pode ser usada para consultar um PID específico ou pode ser usado pgrep wget.
Kusalananda
0

Eu costumo tail wget-logver as últimas linhas do log, dando-me uma idéia do status do download.

cooljay
fonte