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
. Undbash
übergibt diesen Dateinamen, weil ' keine Dateien finden kann, die diesem Muster entsprechen. Bessere Shells wiezsh
hätten einen " no match " -Fehler zurückgegeben und nicht ausgeführtls
ü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