Что такое «Выход 2» из состояния завершенной фоновой работы?


12

У меня есть упражнение, чтобы поместить в файл некоторые данные (* conf из некоторых каталогов), и мне нужно сделать это в фоновом режиме. Я сделал это, и мне интересно, что означает вывод сообщений:

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

Enter поднимается в эту строку:

[1] 2533

что это значит? После другого ввода появляются другие сообщения

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

Что это значит? Что такое «Выход 2»?

Введите результаты проверки - вроде бы все ок.

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

Я использую CentOS 6.4, эмулятор терминала Gnome.

Ответы:


18

Что это значит? Что такое «Выход 2»?

Это статус выхода ls. Смотри man для 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).

Я думаю, причина в том, что у вас много * conf файлов в / /etcнет * conf файлов в / usr. На самом деле ls -ld /usr/*conf;имел бы тот же эффект.

Так что, если я делаю на моем компьютере lsдля существующего файла:

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

И для файла, который не существует:

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

Или как фоновый процесс ls для файла, который не существует:

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

O! Спасибо. Теперь я понял, что ls /usr/*confвозвращение, 2так как нет никаких имен файлов, содержащих «conf».
ALZ

2
@ALZ, обратите внимание, что он возвращает 2, потому что не может найти файл с именем /usr/*conf. И bashпередает ему это имя файла, потому что он не может найти файлы, которые соответствуют этому шаблону. Лучшие оболочки вроде zshбы вернули ошибку "нет совпадения" и вообще не запускались ls.
Стефан Шазелас

1

Эта средняя команда завершилась с состоянием выхода, отличным от 0 (успех).

Постарайтесь не ставить (&) в конце, чтобы увидеть, что произойдет.

Если эта команда занимает много времени при запуске, вы можете проверить это с помощью:

lnx #> jobs -l

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.