Mam ćwiczenie, aby umieścić w pliku pewne dane (* conf z niektórych katalogów) i muszę to zrobić w tle. Zrobiłem to i zastanawiam się, jakie jest znaczenie komunikatów wyjściowych:
[A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 &
Wpisz podnosi ten wiersz:
[1] 2533
co to znaczy? Po drugim Enter pojawiają się kolejne komunikaty.
[A@localhost tests]$ [1]+ Exit 2 ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1
Co to oznacza? Co to jest „Exit 2”?
Wpisz wyniki sprawdzenia – wydaje się, że wszystko w porzą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]$
Używam CentOS 6.4, Emulator terminala GNOME.
Odpowiedź
Co to oznacza? Co to jest „Wyjście 2”?
To jest kod zakończenia ls
. Zobacz man for 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).
Myślę, że powodem jest to, że masz dużo * conf plików w /etc
i żadnych plików * conf w / usr. W rzeczywistości ls -ld /usr/*conf;
miałoby ten sam efekt.
Więc jeśli zrobię na moim komputerze ls
dla istniejącego file:
ls main.cpp; echo $? main.cpp 0
A dla pliku, który nie istnieje:
ls main.cppp; echo $? ls: cannot access main.cppp: No such file or directory 2
Lub jako proces w tle dla pliku, który nie istnieje:
>ls main.cppp & [1] 26880 ls: cannot access main.cppp: No such file or directory [1]+ Exit 2 ls main.cppp
Komentarze
Odpowiedź
To znaczy, że polecenie zakończyło się ze statusem wyjścia innym niż 0 (powodzenie).
Staraj się nie umieszczać (&) na końcu , aby zobaczyć, co się stanie.
Jeśli wykonanie tego polecenia zajmuje dużo czasu, możesz to sprawdzić za pomocą:
lnx #> jobs -l
ls /usr/*conf
zwraca2
, ponieważ nie ma żadnych nazw plików zawierających " conf ".bash
przekazuje tę nazwę pliku, ponieważ może ' znaleźć pliki pasujące do tego wzorca. Lepsze powłoki, takie jakzsh
, zwróciłyby błąd " bez dopasowania " i nie zostałyby uruchomionels
w ogóle.