Ik heb een oefening om wat gegevens in een bestand te plaatsen (* conf van sommige mappen) en moet dit op de achtergrond doen. Ik heb het gedaan en ik vraag me af wat de betekenis is van uitvoerberichten:
[A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 &
Enter gaat omhoog in deze rij:
[1] 2533
wat betekent het? Na een andere Enter, verschijnen er nog een bericht
[A@localhost tests]$ [1]+ Exit 2 ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1
Wat betekent het? Wat is “Exit 2”?
Voer een controleresultaat in – het lijkt allemaal in orde.
[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]$
Ik gebruik CentOS 6.4, Gnome Terminal Emulator.
Antwoord
Wat betekent het? Wat is “Exit 2”?
Het is de exit-status van ls
. Zie man voor 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).
Ik denk dat de reden is dat je veel * conf-bestanden hebt in /etc
en geen * conf-bestanden in / usr. In feite zou ls -ld /usr/*conf;
hetzelfde effect hebben gehad.
Dus als ik dat op mijn computer ls
voor een bestaande bestand:
ls main.cpp; echo $? main.cpp 0
En voor een bestand dat niet bestaat:
ls main.cppp; echo $? ls: cannot access main.cppp: No such file or directory 2
Of als achtergrondproces ls voor een bestand dat niet bestaat:
>ls main.cppp & [1] 26880 ls: cannot access main.cppp: No such file or directory [1]+ Exit 2 ls main.cppp
Reacties
Answer
Dat gemene commando is afgelopen met exitstatus anders dan 0 (geslaagd).
Probeer (&) niet aan het einde te plaatsen , om te zien wat er gebeurt.
Als dat commando veel vraagt tijdens het uitvoeren, kun je het controleren met:
lnx #> jobs -l
ls /usr/*conf
2
retourneert aangezien er geen bestandsnamen zijn die " conf "./usr/*conf
. Enbash
geeft het die bestandsnaam door omdat het ' geen bestanden kan vinden die aan dat patroon voldoen. Betere shells zoalszsh
zouden een " geen match " fout hebben geretourneerd en nietls
helemaal.