
когда я бегу
$ ls -R / &
хотя &
(что предполагает перевод процесса в фоновый режим) мне в конечном итоге приходится просматривать весь список моей системы. Нажатие CTRL+C или CTRL+Z не помогает. Что я делаю не так?
решение1
При запуске ls -R /
в фоновом режиме команда немедленно запускается и управление возвращается вызывающей оболочке (вашей интерактивной оболочке). Однако стандартный поток вывода и стандартный поток ошибок ls
по-прежнему подключены к терминалу, поэтому вы видите вывод команды в терминале.
В комментарияхвы задаете дополнительный вопрос, который показывает, что вы знаете, что можете перенаправить вывод команды на , чтобы /dev/null
избежать его потоковой передачи на терминал:
ls -R / >/dev/null 2>&1 &
Следующий вопрос: «Почему он отображается, Exit 1
когда я проверяю статус задания с помощью jobs -l
.
Вы получаете ненулевой статус выхода из , ls
потому что он не был полностью успешно запущен. Это не так, потому что вы попытались сделать рекурсивный листинг всех файлов во всей системе, и, предположительно, некоторые из каталогов в ваших системах не доступны для чтения пользователю, от имени которого вы запустили команду. Если бы вы не перенаправили стандартный поток ошибок /dev/null
(удалив 2>&1
из командной строки), вы, вероятно, увидели бы ошибки в терминале.