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
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
ls /usr/*conf
restituisce2
poiché non ci sono nomi di file contenenti " conf "./usr/*conf
. Ebash
gli sta trasmettendo quel nome file perché ' non trova i file che corrispondono a quel pattern. Shell migliori comezsh
avrebbero restituito un errore " nessuna corrispondenza " e non sarebbero state eseguitels
affatto.