2016-12-04 1 views
2

명령에서 명령 출력을 얻으려고했으나 얻을 수 없습니다. 수동으로 실행하면 정상적인 결과를 화면에 표시합니다. [[email protected] ~]# dnsdist -e "topQueries()" 1 Rest 0 100.0% linux 명령에서 화면 출력하기

나는 dnsdist -e 'topQueries() 2>&1 1> /tmp/abc로했습니다. 그러나 /tmp/abc은 여전히 ​​비어 있습니다. screen 명령으로 해결할 수 없다고 생각합니다. 누구에게 추천이 있습니까?

추가 정보 :

나머지 1 0 100.0 %

가 topQueries의 결과이다(). '-e'는 dnsdist에서 명령을 실행하는 것을 의미합니다. 우리가 mysql에 접근 한 다음 SQL 문을 호출하는 것처럼 동작한다.

+0

결과가 화면에 출력됩니까? –

+0

예. 필자가 수동으로 명령을 실행 한 후에이 결과를 화면에 표시합니다. –

+0

리디렉션 순서가 중요합니다.'examplecommand>/tmp/abc 2> & 1'에 대해 – rkosegi

답변

1

rkosegi commented으로 주문하는 것이 중요합니다. 당신이 실행하는 경우 :

examplecommand 2>&1 1> /tmp/abc 

IT는 표준 에러 출력을 받아 표준 출력 현재을 어디로 로 전송 한 후 파일을 표준 출력 전송한다.

당신은 대신 할 수 있습니다 :

파일에 표준 출력 전송
examplecommand 1> /tmp/abc 2>&1 

표준 출력 현재, 즉 파일을 어디로, 다음 에 stderr를 보냅니다.

+0

그것은 작동하지 않습니다 :(/ tmp/abc와 screen은 여전히 ​​비어있는 값입니다.) –

+0

stdout과 stderr에서이 결과를 얻을 수없는 것 같습니다 –

+1

방금'''을 놓쳤습니다 – giusti

0

화면과 파일/tmp/abc 모두에서 stderr 및 stdout을 사용하려면 tee를 사용할 수 있습니다.

$cat a.sh 
echo "stderr" >&2 
echo "stdout" 

./a.sh 2>&1 | tee /tmp/abc 
stderr 
stdout 

$ cat /tmp/abc 
stderr 
stdout 
관련 문제