Tenho um exercício para colocar alguns dados em um arquivo (* 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? Depois de outro Enter, outra mensagem aparece

[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”?

Insira os resultados da verificação – parece estar tudo bem.

[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, Emulador de terminal Gnome.

Resposta

O que isso significa? O que é “Saída 2”?

É o status de saída de ls. Veja man for 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). 

Acho que o motivo é que você tem muitos arquivos * conf em /etc e nenhum arquivo * conf em / usr. Na verdade, ls -ld /usr/*conf; teria o mesmo efeito.

Então, se eu fizer no meu computador ls para um existente arquivo:

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 ls 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 

Comentários

  • O! Obrigado. Agora eu ' percebi que ls /usr/*conf return 2 já que não há nomes de arquivo contendo " conf ".
  • @ALZ, observe que retorna 2 porque não consegue encontrar o arquivo chamado /usr/*conf. E bash está passando esse nome de arquivo porque não pode ' encontrar arquivos que correspondam a esse padrão. Shell melhores como zsh teriam retornado um erro " nenhuma correspondência " e não executado ls em tudo.

Resposta

Isso significa que o comando terminou com status de saída diferente de 0 (sucesso).

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

Se esse comando demorar muito para ser executado, você pode verificá-lo com:

lnx #> jobs -l

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *