Ich habe eine Übung, um einige Daten (* conf aus einigen Verzeichnissen) in eine Datei zu schreiben, und muss dies im Hintergrund tun. Ich habe es getan und frage mich, was die Bedeutung von Ausgabenachrichten ist:

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

Geben Sie diese Zeile ein:

[1] 2533 

was bedeutet das? Nach der anderen Eingabe werden weitere Meldungen angezeigt.

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

Was bedeutet das? Was ist „Exit 2“?

Geben Sie ein Prüfergebnis ein – scheint alles in Ordnung zu sein.

[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]$ 

Ich verwende CentOS 6.4, Gnome Terminal Emulator.

Antwort

Was bedeutet das? Was ist „Exit 2“?

Es ist der Exit-Status von ls. Siehe Mann 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). 

Ich denke, der Grund ist, dass Sie viele * conf-Dateien in /etc haben und keine * conf-Dateien in / usr. Tatsächlich hätte ls -ld /usr/*conf; den gleichen Effekt gehabt.

Wenn ich also auf meinem Computer ls für ein vorhandenes tun würde Datei:

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

Und für eine Datei, die nicht vorhanden ist:

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

Or. en Als Hintergrundprozess gilt eine Datei, die nicht vorhanden ist:

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

Kommentare

  • O! Vielen Dank. Jetzt habe ich ' festgestellt, dass ls /usr/*conf 2 zurückgibt, da es keine Dateinamen gibt, die " conf ".
  • @ALZ, beachten Sie, dass 2 zurückgegeben wird, da die Datei mit dem Namen /usr/*conf. Und bash übergibt diesen Dateinamen, weil ' keine Dateien finden kann, die diesem Muster entsprechen. Bessere Shells wie zsh hätten einen " no match " -Fehler zurückgegeben und nicht ausgeführt ls überhaupt.

Antwort

Dieser mittlere Befehl wurde beendet mit einem anderen Exit-Status als 0 (Erfolg).

Versuchen Sie, nicht (&) am Ende zu setzen , um zu sehen, was passiert.

Wenn dieser Befehl beim Ausführen viel Zeit in Anspruch nimmt, können Sie ihn überprüfen mit:

lnx #> jobs -l

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.