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

  • O! Bedankt. Nu heb ik ' beseft dat ls /usr/*conf 2 retourneert aangezien er geen bestandsnamen zijn die " conf ".
  • @ALZ, merk op dat het 2 retourneert omdat het het bestand met de naam /usr/*conf. En bash geeft het die bestandsnaam door omdat het ' geen bestanden kan vinden die aan dat patroon voldoen. Betere shells zoals zsh zouden een " geen match " fout hebben geretourneerd en niet ls helemaal.

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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *