Che cos'è "Uscita 2" dallo stato del lavoro in background finito?


12

Ho un esercizio per mettere in un file alcuni dati (* conf da alcune directory) e devo farlo in background. L'ho fatto e mi chiedo quale sia il significato dei messaggi di output:

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

Enter aumenta questa riga:

[1] 2533

cosa significa? Dopo altri Invio, vengono visualizzati altri messaggi

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

Cosa significa? Che cos'è "Uscita 2"?

Inserisci i risultati di un controllo: sembra tutto a posto.

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

Sto usando CentOS 6.4, Gnome Terminal Emulator.

Risposte:


18

Cosa significa? Che cos'è "Uscita 2"?

È lo stato di uscita di ls. Vedi man per 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).

Immagino che il motivo sia che hai molti file * conf in /etce nessun file * conf in / usr. In effetti ls -ld /usr/*conf;avrebbe avuto lo stesso effetto.

Quindi, se lo faccio sul mio computer lsper un file esistente:

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

E per un file che non esiste:

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

O come processo in background per un file che non esiste:

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

O! Grazie. Ora ho capito che ls /usr/*confritorno 2dal momento che non ci sono nomi di file contenenti "conf".
ALZ,

2
@ALZ, nota che restituisce 2 perché non riesce a trovare il file chiamato /usr/*conf. E gli bashpassa quel nome di file perché non riesce a trovare i file che corrispondono a quel modello. Conchiglie migliori come zshavrebbero restituito un errore "nessuna corrispondenza" e non funzionerebbero lsaffatto.
Stéphane Chazelas,

1

Questo comando medio ha terminato con uno stato di uscita diverso da 0 (successo).

Cerca di non mettere (&) alla fine, per vedere cosa succede.

Se quel comando impiega molto durante l'esecuzione, puoi verificarlo con:

lnx #> jobs -l

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.