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 ls
ainda 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/null
evitar que ele seja transmitido para o terminal:
ls -R / >/dev/null 2>&1 &
A pergunta seguinte é "Por que isso aparece Exit 1
quando verifico o status do trabalho com jobs -l
.
Você obtém um status de saída diferente de zero ls
porque 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>&1
da linha de comando), provavelmente teria visto erros no terminal.