Ho un esercizio per mettere in un file alcuni dati (* conf da alcune directory) e devo farlo in background. Lho fatto e mi chiedo qual è il significato dei messaggi di output:

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

Inserisci aumenta questa riga:

[1] 2533 

cosa significa? Dopo altri Invio, viene visualizzato un altro messaggio

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

Cosa significa? Che cosè “Exit 2”?

Inserisci i risultati di un controllo – sembra che sia tutto 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]$ 

Sto usando CentOS 6.4, Gnome Terminal Emulator.

Risposta

Cosa significa? Che cosè “Exit 2”?

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

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

Quindi se sul mio computer ls un esistente file:

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 

Oppure come processo in background ls 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 

Commenti

  • O! Grazie. Ora ' mi sono reso conto che ls /usr/*conf restituisce 2 poiché non ci sono nomi di file contenenti " conf ".
  • @ALZ, tieni presente che restituisce 2 perché non riesce a trovare il file chiamato /usr/*conf. E bash gli sta trasmettendo quel nome file perché ' non trova i file che corrispondono a quel pattern. Shell migliori come zsh avrebbero restituito un errore " nessuna corrispondenza " e non sarebbero state eseguite ls affatto.

Risposta

Questo significa che il comando è terminato con stato di uscita diverso da 0 (successo).

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

Se il comando richiede molto durante lesecuzione, puoi verificarlo con:

lnx #> jobs -l

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *