Mám cvičení, abych do souboru vložil některá data (* conf z některých adresářů) a musím to udělat na pozadí. Udělal jsem to a zajímalo by mě, jaký je význam výstupních zpráv:
[A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 &
Enter zvedne tento řádek:
[1] 2533
Co to znamená? Po dalším zadání se objeví další zprávy
[A@localhost tests]$ [1]+ Exit 2 ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1
Co to znamená? Co je „Konec 2“?
Zadejte výsledky kontroly – zdá se, že je vše v pořádku.
[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]$
Používám CentOS 6.4, Emulátor terminálu Gnome.
Odpověď
Co to znamená? Co je „Konec 2“?
Je to stav ukončení ls
. Viz man pro 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).
Myslím, že důvodem je, že v /etc
máte spoustu * conf souborů. a žádné soubory * conf v / usr. Ve skutečnosti by ls -ld /usr/*conf;
měl stejný účinek.
Takže pokud na počítači udělám ls
pro existující soubor:
ls main.cpp; echo $? main.cpp 0
A pro soubor, který neexistuje:
ls main.cppp; echo $? ls: cannot access main.cppp: No such file or directory 2
Nebo jako proces na pozadí pro soubor aa, který neexistuje:
>ls main.cppp & [1] 26880 ls: cannot access main.cppp: No such file or directory [1]+ Exit 2 ls main.cppp
Komentáře
Odpověď
Znamená to, že průměrný příkaz skončil se stavem ukončení jiným než 0 (úspěch).
Snažte se nedávat (&) na konec , abyste zjistili, co se stane.
Pokud tento příkaz při spuštění trvá hodně, můžete jej zkontrolovat pomocí:
lnx #> úlohy -l
ls /usr/*conf
vrací2
, protože neexistují žádné názvy souborů obsahující " conf "./usr/*conf
. Abash
jej předává jako název souboru, protože ' nemůže najít soubory, které odpovídají tomuto vzoru. Lepší skořápky jakozsh
by vrátily chybu " bez shody " a nespustily by sels
vůbec.