& para executar um comando em segundo plano

& para executar um comando em segundo plano

quando eu corro

$ ls -R / & 

embora &(o que supõe relegar o processo para segundo plano) acabe tendo que analisar toda a listagem do meu sistema. pressionar CTRL+C ou CTRL+Z não ajuda. O que estou fazendo de errado?

Responder1

Quando você inicia ls -R /em segundo plano, o comando é iniciado imediatamente e o controle é devolvido ao shell de chamada (seu shell interativo). No entanto, o fluxo de saída padrão e o fluxo de erro padrão lsainda estão conectados ao terminal, é por isso que você vê a saída do comando no terminal.

Nos comentáriosvocê faz uma pergunta de acompanhamento que mostra que você sabe que pode redirecionar a saída do comando para /dev/nullevitar que ele seja transmitido para o terminal:

ls -R / >/dev/null 2>&1 &

A pergunta seguinte é "Por que isso aparece Exit 1quando verifico o status do trabalho com jobs -l.

Você obtém um status de saída diferente de zero lsporque ele não foi executado com êxito. Isso não aconteceu porque você tentou fazer uma listagem recursiva de todos os arquivos em todo o sistema e, presumivelmente, alguns dos diretórios em seus sistemas não podem ser lidos pelo usuário que você usou para executar o comando. Se você não tivesse redirecionado o fluxo de erros padrão para /dev/null(removendo 2>&1da linha de comando), provavelmente teria visto erros no terminal.

informação relacionada