Jag har en övning för att lägga in data i en fil (* conf från vissa kataloger) och måste göra detta i bakgrunden. Jag gjorde det och jag undrar vad som är meningen med utgående meddelanden:

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

Enter stiger den här raden:

[1] 2533 

vad betyder det? Efter andra Enter visas ytterligare meddelanden

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

Vad betyder det? Vad är ”Exit 2”?

Ange ett kontrollresultat – verkar vara helt 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]$ 

Jag använder CentOS 6.4, Gnome Terminal Emulator.

Svar

Vad betyder det? Vad är ”Exit 2”?

Det är exitstatus för ls. Se man för 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). 

Jag antar att anledningen är att du har många * conf-filer i /etc och inga * conf-filer i / usr. Faktum är att ls -ld /usr/*conf; skulle ha haft samma effekt.

Så om jag gör det på min dator ls för en befintlig fil:

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

Och för en fil som inte finns:

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

Eller som bakgrundsprocess ls för aa-fil som inte finns:

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

Kommentarer

  • O! Tack. Nu har jag ' insett att ls /usr/*conf returnerar 2 eftersom det inte finns några filnamn som innehåller " conf ".
  • @ALZ, notera att den returnerar 2 eftersom den inte hittar filen som heter /usr/*conf. Och bash skickar det filnamnet eftersom det ' inte hittar filer som matchar det mönstret. Bättre skal som zsh skulle ha returnerat ett " ingen matchning " och inte kör ls alls.

Svar

Det genomsnittliga kommandot är klart med utgångsstatus annorlunda än 0 (framgång).

Försök att inte placera (&) , för att se vad som händer.

Om det kommandot tar mycket när det körs kan du kontrollera det med:

lnx #> jobb -l

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *