내 서버에 새 애플리케이션 버전을 배포하는 과정의 일부로 실행해야 하는 콘솔 애플리케이션이 있습니다.
이 콘솔 애플리케이션은 콘솔로 출력하도록 설계되었으며 변경할 수 없습니다.
정상적으로 실행하고 싶지만 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
이를 수행하는 방법에는 여러 가지가 있습니다.
nohup 2>&1 application &
. 그러면 모든 출력이 nohup.out이라는 파일로 전송됩니다. SIGHUP도 포착합니다. 따라서 셸을 닫아도 계속 실행됩니다. 무슨 일이 일어나고 있는지 보려면 를 사용하여 출력을 추적할 수 있습니다tail -f nohop.out
.- 이것
tee
명령은 SIGHUP을 차단하지 않고 동일한 작업을 수행합니다. C2h와 goldilock은 이미 이에 대해 언급했습니다. - 제한된 롤백만 필요한 경우 다음을 시도해 보십시오.
screen -L
. 이건 좀 더 자세한 설명이 있어요이 기사에서.
화면이 해결 방법이라는 것을 알고 있지만 화면의 다른 기능은 배포에 적합합니다.