>/dev/null 2>&1을 사용할 때 "echo >/sys/..."가 적용되지 않습니다.

>/dev/null 2>&1을 사용할 때 "echo >/sys/..."가 적용되지 않습니다.

이것은 조금 이상합니다. 다음 명령을 사용하여 iSCSI 장치를 스캔하려고 합니다.

echo 1 > /sys/block/sda/device/rescan >/dev/null 2>&1
# Doesn't work. The rescan won't recognize the new available disk space. 

echo 1 > /sys/block/sda/device/rescan
# Works: recognizes the new available disk space. 

/dev/null화면이 복잡해지는 것을 원하지 않는데, 어떻게 모든 stdout과 stderr를 화면으로 보낼 수 있습니까?

답변1

echo 1 > /sys/block/sda/device/rescan >/dev/null 2>&1
       ^                              ^

여기에는 두 가지 출력 리디렉션이 있습니다. 후자가 적용되므로 이는 다음과 동일합니다.

echo 1 >/dev/null 2>&1

파일에는 아무 것도 쓰지 않습니다 /sys.

여기서 실행 중인 명령은 echo명령줄에서 인쇄하도록 요청한 내용만 표준 출력으로 인쇄하므로 거기에는 "놀라운" 내용이 인쇄되지 않습니다. 또한 첫 번째 리디렉션을 열 수 없는 경우 오류가 발생할 수 있지만 리디렉션이 처리되는 동안, 즉 명령 자체가 아닌 셸에서 나타날 가능성이 높으므로 리디렉션도 2>아무 작업도 수행하지 않을 수 있습니다.

반면에 재검색을 실행하면 어딘가에 출력이 발생하는 경우 일반적인 로깅 메커니즘을 통해 커널에서 출력될 가능성이 높습니다. 따라서 이를 제어하려면 로깅 구성이 무엇인지 확인해야 합니다.

Linux 가상 터미널을 사용하는 경우 일부 커널 메시지가 활성 가상 터미널에 인쇄됩니다. 당신은 그것을 사용할 수 있습니다dmesg -n<level>콘솔로 전송되는 메시지의 우선순위를 설정합니다.

관련 정보