내가 달릴 때
$ ls -R / &
(프로세스는 백그라운드로 내려갈 예정 이었지만 &
) 결국 앉아서 시스템의 전체 목록을 살펴보아야 했습니다. CTRL+C 또는 CTRL+Z를 눌러도 도움이 되지 않습니다. 내가 뭘 잘못했나요?
답변1
ls -R /
백그라운드에서 실행 하면 명령이 즉시 시작되고 호출 셸(대화형 셸)에 다시 제어권이 전달됩니다. 그러나 표준 출력 및 표준 오류 스트림은 ls
여전히 터미널에 연결되어 있으므로 터미널에 명령 출력이 표시됩니다.
댓글에서/dev/null
명령 출력을 터미널로 스트리밍하지 않도록 리디렉션할 수 있음을 나타내는 후속 질문을 합니다 .
ls -R / >/dev/null 2>&1 &
후속 질문은 " Exit 1
왜 jobs -l
.
ls
완전히 성공적으로 실행되지 않았기 때문에 종료 상태가 0이 아닙니다 . 전체 시스템의 모든 파일을 재귀적으로 나열하려고 시도하고 있으며 명령을 실행하는 사용자가 시스템의 일부 디렉터리를 읽을 수 없기 때문에 이는 사실이 아닙니다. 표준 오류 스트림을 명령줄에서 제거 /dev/null
하여 리디렉션하지 않으면 2>&1
터미널에 오류가 표시될 수 있습니다.