& для запуска команды в фоновом режиме

& для запуска команды в фоновом режиме

когда я бегу

$ 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из командной строки), вы, вероятно, увидели бы ошибки в терминале.

Связанный контент