¿Qué es la "Salida 2" del estado final del trabajo en segundo plano?


12

Tengo un ejercicio para poner en un archivo algunos datos (* conf de algunos directorios) y necesito hacer esto en segundo plano. Lo hice y me pregunto cuál es el significado de los mensajes de salida:

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

Enter sube esta fila:

[1] 2533

¿Qué significa eso? Después de otro Enter, aparecen otros mensajes

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

Qué significa eso? ¿Qué es la "Salida 2"?

Ingrese los resultados de una verificación; parece que todo está bien.

[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]$ 

Estoy usando CentOS 6.4, Gnome Terminal Emulator.

Respuestas:


18

Qué significa eso? ¿Qué es la "Salida 2"?

Es el estado de salida de ls. Ver hombre 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).

Supongo que la razón es que tienes muchos archivos * conf /etcy no * conf archivos en / usr. De hecho ls -ld /usr/*conf;habría tenido el mismo efecto.

Entonces, si lo hago en mi computadora lspara un archivo existente:

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

Y para un archivo que no existe:

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

O como un proceso en segundo plano ls para un archivo que no existe:

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

Oh! Gracias. Ahora me he dado cuenta de que ls /usr/*confel retorno 2ya que no hay ningún nombre de archivo que contienen "conf".
ALZ

2
@ALZ, tenga en cuenta que devuelve 2 porque no puede encontrar el archivo llamado /usr/*conf. Y le bashestá pasando ese nombre de archivo porque no puede encontrar archivos que coincidan con ese patrón. Mejores shells como zshhabrían devuelto un error de "no coincidencia" y no se ejecutarían lsen absoluto.
Stéphane Chazelas

1

Ese comando medio ha terminado con un estado de salida diferente a 0 (éxito).

Intenta no poner (&) al final, para ver qué sucede.

Si ese comando tarda mucho cuando se ejecuta, puede verificarlo con:

lnx #> jobs -l

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.