Jeg har en øvelse for å legge inn noen data (* conf fra noen kataloger) i en fil og trenger å gjøre dette i bakgrunnen. Jeg gjorde det og lurer på hva som er meningen med utgangsmeldinger:

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

Enter stiger denne raden:

[1] 2533 

hva betyr det? Etter andre Enter vises andre meldinger

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

Hva betyr det? Hva er «Exit 2»?

Skriv inn en kontrollresultat – ser ut til å være 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]$ 

Jeg bruker CentOS 6.4, Gnome Terminal Emulator.

Svar

Hva betyr det? Hva er «Avslutt 2»?

Det er utgangsstatus for ls. Se mann 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). 

Jeg antar at årsaken er at du har mange * conf-filer i /etc og ingen * conf-filer i / usr. Faktisk ville ls -ld /usr/*conf; hatt samme effekt.

Så hvis jeg gjør det på datamaskinen min ls for en eksisterende fil:

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

Og for en fil som ikke eksisterer:

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

Eller som bakgrunnsprosess ls for aa-fil som ikke eksisterer:

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

Kommentarer

  • O! Takk. Nå har jeg ' innsett at ls /usr/*conf returnerer 2 siden det ikke er noen filnavn som inneholder " conf ".
  • @ALZ, merk at den returnerer 2 fordi den ikke finner filen kalt /usr/*conf. Og bash sender det filnavnet fordi det ' ikke finner filer som samsvarer med det mønsteret. Bedre skjell som zsh ville ha returnert en " ingen samsvar " feil og ikke kjøre ls i det hele tatt.

Svar

Den gjennomsnittlige kommandoen er ferdig med annen utgangsstatus enn 0 (suksess).

Prøv å ikke sette (&) på slutten , for å se hva som skjer.

Hvis den kommandoen tar mye når du kjører, kan du sjekke den med:

lnx #> jobber -l

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *