모든 출력을 / dev / null로 리디렉션하는 방법은 무엇입니까?
백그라운드에서 프로그램 (google-chrome)을 실행하고 싶지만 터미널에 메시지가 출력되지 않도록합니다.
나는 이것을 시도했다.
google-chrome 2>&1 1>/dev/null &
그러나 터미널은 여전히 다음과 같은 메시지없이 채워집니다.
[5746 : 5746 : 0802/100534 : ERROR : object_proxy.cc (532)] 메서드를 호출하지 못했습니다 : org.chromium.Mtpd.EnumerateStorag ...
내가 도대체 뭘 잘못하고있는 겁니까? 모든 출력을 /dev/null
어떻게 리디렉션 합니까?
리디렉션 연산자는 왼쪽에서 오른쪽으로 평가됩니다. 당신이 잘못한 것을 2>&1
먼저 놓았 는데, 이것은 당신이 아직 리디렉션 하지 않았기 때문에 현재 가리키는 로컬 터미널 화면 2
과 같은 위치 를 가리 킵니다 . 다음 중 하나를 수행해야합니다.1
1
2>/dev/null 1>/dev/null google-chrome &
또는
2>/dev/null 1>&2 google-chrome &
명령과 관련된 리디렉션 연산자의 위치는 중요하지 않습니다. 명령 앞이나 뒤에 둘 수 있습니다.
섹션 Redirection
bash의 참조 설명서에서 다음과 같이 말합니다.
연산자
[n]>&word
는 [...] 출력 파일 설명자를 복제하는 데 사용됩니다.
모두를 리디렉션하려면 stderr
및 stdout
에 file
양식을 사용해야합니다
&>file
대리를 의미하는 귀하의 경우와 관련하여
2>&1 1>/dev/null
와
&>/dev/null
구문이 다른 것 같습니다.
./a.out 1>/dev/null 2>&1 &
FD의 장치를 참조 = 2가 다른 때 ./a.out 1>/dev/null 2>&1
와./a.out 2>&1 1>/dev/null &
1) FD = 2는 / dev / null을 가리 킵니다.
>./a.out 1>/dev/null 2>&1 &
[1] 21181
>lsof -p `pidof a.out`
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
a.out 21181 xxxxxxxxxxxxxxx 0u CHR 136,43 0t0 46 /dev/pts/43
a.out 21181 xxxxxxxxxxxxxxx 1w CHR 1,3 0t0 3685 /dev/null
a.out 21181 xxxxxxxxxxxxxxx 2w CHR 1,3 0t0 3685 /dev/null
2) FD = 2는 / dev / pts / 43을 가리 킵니다.
>./a.out 2>&1 1>/dev/null &
[1] 25955
>lsof -p `pidof a.out`
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
a.out 25955 xxxxxxxxxxxxxxx 0u CHR 136,43 0t0 46 /dev/pts/43
a.out 25955 xxxxxxxxxxxxxxx 1w CHR 1,3 0t0 3685 /dev/null
a.out 25955 xxxxxxxxxxxxxxx 2u CHR 136,43 0t0 46 /dev/pts/43
참고 URL : https://stackoverflow.com/questions/18012930/how-to-redirect-all-output-to-dev-null
'Programing' 카테고리의 다른 글
문서 높이 변경 감지 (0) | 2020.12.12 |
---|---|
테이블 형식없이 SQL 쿼리 결과 가져 오기 (0) | 2020.12.12 |
Node.js – 이벤트 js 72가 처리되지 않은 '오류'이벤트를 발생시킵니다. (0) | 2020.12.12 |
UTF8 인코딩이 최대 길이 32766보다 깁니다. (0) | 2020.12.12 |
JUnit에서 assertEquals (double, double)이 사용되지 않는 이유는 무엇입니까? (0) | 2020.12.12 |