& 백그라운드에서 명령을 실행하는 경우

& 백그라운드에서 명령을 실행하는 경우

내가 달릴 때

$ 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터미널에서 오류가 표시되었을 수 있습니다.

관련 정보