Jeg har en øvelse for at lægge nogle data i en fil (* conf fra nogle mapper) og har brug for at gøre dette i baggrunden. Jeg gjorde det, og jeg undrer mig over, hvad meningen med outputbeskeder er:

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

Enter stiger denne række:

[1] 2533 

hvad betyder det? Efter anden Enter vises en anden besked

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

Hvad betyder det? Hvad er “Exit 2”?

Indtast et kontrolresultat – synes at være alt i orden.

[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 bruger CentOS 6.4, Gnome Terminal Emulator.

Svar

Hvad betyder det? Hvad er “Exit 2”?

Det er exit-status for ls. Se mand 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 antager, at årsagen er, at du har mange * conf-filer i /etc og ingen * conf-filer i / usr. Faktisk ville ls -ld /usr/*conf; have haft den samme effekt.

Så hvis jeg gør det på min computer ls for en eksisterende fil:

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

Og for en fil, der ikke findes:

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

Eller som baggrundsproces ls for en en fil, der ikke findes:

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

Kommentarer

  • O! Tak. Nu har jeg ' indset, at ls /usr/*conf returnerer 2, da der ikke er nogen filnavne, der indeholder " conf ".
  • @ALZ, bemærk at den returnerer 2, fordi den ikke kan finde filen kaldet /usr/*conf. Og bash sender det filnavnet, fordi det ' ikke kan finde filer, der matcher det mønster. Bedre skaller som zsh ville have returneret en " ingen match " fejl og ikke køre ls overhovedet.

Svar

Den gennemsnitlige kommando er afsluttet med udgangsstatus forskellig fra 0 (succes).

Prøv ikke at sætte (&) , for at se hvad der sker.

Hvis denne kommando tager meget, når du kører, kan du tjekke den med:

lnx #> job -l

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *