O que é "Saída 2" do status do trabalho em segundo plano concluído?

12

Eu tenho um exercício para colocar em um arquivo alguns dados (* conf de alguns diretórios) e preciso fazer isso em segundo plano. Eu fiz isso e estou me perguntando qual é o significado das mensagens de saída:

[A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 &

Enter aumenta esta linha:

[1] 2533

O que isso significa? Após outro Enter, outras mensagens aparecem

[A@localhost tests]$
[1]+  Exit 2                  ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1

O que isso significa? O que é "Saída 2"?

Digite os resultados de uma verificação - parece que tudo está OK.

[A@localhost tests]$
[A@localhost tests]$ ls -l test1_6_conf.txt
-rw-rw-r--. 1 A A 2641 Nov 22 14:19 test1_6_conf.txt
[A@localhost tests]$ 

Estou usando o CentOS 6.4, Gnome Terminal Emulator.

ALZ
fonte

Respostas:

18

O que isso significa? O que é "Saída 2"?

É o status de saída de ls. Veja man para ls:

   Exit status:
       0      if OK,

       1      if minor problems (e.g., cannot access subdirectory),

       2      if serious trouble (e.g., cannot access command-line argument).

Eu acho que o motivo é que você tem muitos arquivos * conf /etce nenhum arquivo * conf em / usr. De fato ls -ld /usr/*conf;, teria tido o mesmo efeito.

Então, se eu fizer no meu computador lsum arquivo existente:

ls main.cpp; echo $?
main.cpp
0

E para um arquivo que não existe:

ls main.cppp; echo $?
ls: cannot access main.cppp: No such file or directory
2

Ou como um processo em segundo plano sl para um arquivo que não existe:

>ls main.cppp &
[1] 26880
ls: cannot access main.cppp: No such file or directory
[1]+  Exit 2                  ls main.cppp

fonte
O! Obrigado. Agora eu percebi o ls /usr/*confretorno, 2pois não há nomes de arquivos que contenham "conf".
ALZ
2
@ALZ, observe que ele retorna 2 porque não consegue encontrar o arquivo chamado /usr/*conf. E bashestá passando esse nome de arquivo porque não consegue encontrar arquivos que correspondam a esse padrão. Cascas melhores como zshteriam retornado um erro "sem correspondência" e não seriam executadas ls.
Stéphane Chazelas
1

Esse comando médio terminou com o status de saída diferente de 0 (êxito).

Tente não colocar (&) no final, para ver o que acontece.

Se esse comando demorar muito durante a execução, você poderá verificá-lo com:

lnx #> jobs -l

Vitalie Ghelbert
fonte