출력을 파일에 기록하는 동안 명령을 어떻게 실행할 수 있나요?

출력을 파일에 기록하는 동안 명령을 어떻게 실행할 수 있나요?

내 서버에 새 애플리케이션 버전을 배포하는 과정의 일부로 실행해야 하는 콘솔 애플리케이션이 있습니다.

이 콘솔 애플리케이션은 콘솔로 출력하도록 설계되었으며 변경할 수 없습니다.

정상적으로 실행하고 싶지만 stdout과 stderr을 파일에 기록하면서 콘솔에 출력하고 싶습니다.

Linux에서 이 작업을 어떻게 수행할 수 있나요?

답변1

당신은 그것을 사용할 수 있습니다tee http://en.wikipedia.org/wiki/Tee_(명령)

파이프 전용 표준 출력

cmd | tee log.txt | less

stdout과 stderr을 모두 전송하려면 다음을 수행하십시오.

cmd >>(tee stdout.log) 2>>(tee stderr.log >&2)

답변2

당신은 그것을 사용할 수 있습니다 tee. 예를 들어:

ls -l / | tee tmp.txt

표준 출력으로 인쇄하고 tmp.txt출력 사본을 포함합니다. tmp.txt에 stderr을 포함시키려면 다음을 수행하십시오.

ls -l / 2>&1 | tee tmp.txt

답변3

이를 수행하는 방법에는 여러 가지가 있습니다.

  1. nohup 2>&1 application &. 그러면 모든 출력이 nohup.out이라는 파일로 전송됩니다. SIGHUP도 포착합니다. 따라서 셸을 닫아도 계속 실행됩니다. 무슨 일이 일어나고 있는지 보려면 를 사용하여 출력을 추적할 수 있습니다 tail -f nohop.out.
  2. 이것tee명령은 SIGHUP을 차단하지 않고 동일한 작업을 수행합니다. C2h와 goldilock은 이미 이에 대해 언급했습니다.
  3. 제한된 롤백만 필요한 경우 다음을 시도해 보십시오.screen -L. 이건 좀 더 자세한 설명이 있어요이 기사에서.

화면이 해결 방법이라는 것을 알고 있지만 화면의 다른 기능은 배포에 적합합니다.

관련 정보