[~]$ kill %123
bash: kill: %123: no such job
[~]$ kill %123 2>&1 > /dev/null
bash: kill: %123: no such job
백그라운드 작업 종료 중에 모든 출력을 비활성화하고 싶습니다.
첫 번째 출력이 예상됩니다. 그러나 두 번째 출력은 그렇지 않습니다.
명령줄에 표시된 대로 " 다음으로 2>&1
리디렉션 stderr
" 을 추가하고 "모든 출력을 빈 장치로 리디렉션"을 stdout
사용했습니다 . > /dev/null
그러나 출력은 여전히 터미널에 표시됩니다.
설명이 있나요?
미리 감사드립니다.
업데이트 정보:
다음 명령은 예상대로 작동합니다.
kill %123 > /dev/null 2>&1
답변1
출력 리디렉션은 프로세스의 속성입니다. 따라서 2>&1 리디렉션을 사용할 때 이 세트는현재의stdout을 stderr(즉, 현재 TTY)로 출력한 다음 > stdout을 /dev/null로 설정하여 stderr을 TTY로 설정합니다. 업데이트된 정보에서 먼저 stdout을 올바르게 설정했으므로 둘 다 /dev/null이 됩니다.