2010-07-09 3 views
18

내가 가장 간단한 예는 인으로, 나는 파일에 결과를 로그 출력을 볼 필요가 몇 가지 스크립트가 있습니다출력을 bash에 기록하고 터미널에서 동시에 보는 방법?

$ update-client > my.log 

나는 그것의 동안 명령의 출력을 볼 수 있도록하려면 실행 중이지만 파일에도 기록됩니다. 또한 stderr을 기록하므로 오류 스트림을 기록하는 동안 로그 할 수 있기를 원합니다.

답변

34
update-client 2>&1 | tee my.log 

2> & 1 표준 출력 표준 오차를 리디렉션 티 표준 출력과 표준 파일로 입력을 전송한다.

+1

당신은 또한 로그 파일을 추가 할 수 있습니다 askubuntu 사이트에서 이것에 대해 배우고, 티와 다른 거즈를 수행 http://linux.101hacks.com/unix/tee-command- 예/ – thegeek

4

업데이트 된 파일을 보려면 꼬리를 사용하세요. 배경이 명령을 실행 한 후 바로

$ tail -f my.log 

그것은 지속적으로 업데이트됩니다를 사용하여 위의 위의 명령 후 &을 추가하여 원래의 과정. (파일의 실행이 끝났을 때 알려주지 않으므로 끝내기 위해 Ctrl-c 키를 누르십시오)

+2

와글 와글 군중이 하나 있습니다. 이 답변에 정확히 무엇이 잘못 되었습니까? – Cfreak

+2

제 의견으로는'티 (tee) '를 사용하는 것보다 수천 배나 나쁜 것입니다. –

+0

백그라운드에서 프로세스를 실행해야합니다. –

4

또 다른 옵션은 내부에서 블록 기반 출력 캡처를 사용하는 것입니다 스크립트 (정확한 기술 용어인지 확실하지 않음).

#!/bin/bash 
{ 
    echo "I will be sent to screen and file" 
    ls ~ 
} 2>&1 | tee -a /tmp/logfile.log 

echo "I will be sent to just terminal" 

좀 더 제어 및 유연성이 좋아 - 그래서 나는이 방법을 선호합니다. 당신이 추가하려면

command > /path/to/logfile 

을 (>>)와 출력을 보여줍니다 것이다 쉘을 작성하지 않고

command | tee /path/to/logfile 

equivelent을 :

+0

감사합니다.이 작업은 완벽하게 수행되었습니다. – wiak

2

당신은 그것을 위해 티 명령을 사용할 수 있습니다

command | tee -a /path/to/logfile 

파이프 성병에, 표준 출력 오류 만 잡을 것 참고 : 쉘에서, -a 옵션을 사용 err은 tee가있는 파이프로 처리되지 않습니다. 당신은 (표준 에러에서) 오류를 기록, 사용을 원하는 경우 : 실행 명령을하고, 표준 오류 스트림을 리디렉션 (2) 표준 출력 (1) :

command 2>&1 | tee /path/to/logfile 

이것은 의미한다. 그것은 티 응용 프로그램과 함께 파이프로 전달됩니다.

여기에 설명 된대로

관련 문제