명령 출력을 /dev/null로 리디렉션

명령 출력을 /dev/null로 리디렉션

bash 스크립트에서 다음 줄을 실행하여 원격 시스템에서 /usr/run.pl 스크립트를 실행합니다.

  xargs -P "$numprocs" -I '{}' -n  1 -- perl -e 'alarm shift; exec @ARGV' -- "$timeout" ssh -nxaq -o ConnectTimeout=5 -o StrictHostKeyChecking=no '{}' /usr/run.sh < <(echo -e "$node") 

하지만 콘솔에 다음 stdout이 표시됩니다.

Connection to 143.6.22.4 closed by remote host.
 xargs: perl: exited with status 255; aborting

나 넣어야 해1>/dev/빈내 문법에서 이 메시지를 피하시겠습니까?

답변1

프로세스에는 일반적으로 터미널로 전송되는 두 가지 출력 스트림, 즉 표준 출력(파일 설명자 1에 바인딩됨)과 표준 오류(파일 설명자 2에 바인딩됨)가 있습니다. 이를 통해 예상되는 출력과 오류 메시지 또는 일반적으로 바람직하지 않은 기타 진단 정보 캡처를 쉽게 분리할 수 있습니다.

리디렉션( )을 사용하면 >표준 출력만 지정된 파일이나 위치로 추방되고 표준 오류에는 영향을 미치지 않습니다. 이를 통해 오류가 있는지 확인할 수 있습니다(보이는 대로).

표준 오류를 포함한 모든 출력을 보내려면 두 스트림을 모두 리디렉션해야 합니다.

/path/to/program arg1 arg2 > /dev/null 2>&1

또는 더 구체적으로 말하면:

/path/to/program arg1 arg2 > /dev/null 2> /dev/null

이 구문은 2>&1"현재 파일 설명자 2로 전송된 출력을 파일 설명자 1로 전송된 출력이 전송될 위치로 보냅니다."를 의미합니다. >FD1의 기본값은 생략되었으므로 의미상 과 동일하므로 더 의미가 있을 1>수 있습니다 .2>

답변2

Bash의 콘솔/터미널 로그를 표시하지 않으려면 다음 명령을 사용하십시오. 예를 들어 원하지 않는 요청/응답 로그를 생성하는 PHP 서버를 시작하면 다음 명령을 사용하여 이 작업을 수행합니다.

php -S localhost:8989 &> /dev/null

관련 정보