내가 시작하는 일부 클라우드 머신의 경우 특정 파일, syslog 및 터미널 / 콘솔에 로깅하려고합니다.
내 컴퓨터 설정 / cloud-init 스크립트 맨 위에 다음이 있습니다.
#!/bin/bash
exec &> >(tee "/tmp/box-setup.log" | logger -t box-setup)
apt-get install -y some-package
이것은 출력을 파일 및 syslog로 보내는 데 효과적이지만 출력을 터미널로 파이프하지 않습니다.
일반적으로 말해서 터미널 출력이 없다는 것은 원격 콘솔에서 디버깅 할 때를 제외하고는 큰 문제가 아닙니다. 그럴 때 bash 스크립트가 실행될 때 콘솔이 비어 있기 때문에 나는 완전히 장님입니다.
bash
리디렉션 또는 기타 모든 출력 (표준 오류와 함께 표준 출력)을 파일, syslog 및 터미널에 동시에 파이프 하는 간단한 방법이 있습니까?
Ubuntu 16.04를 실행하고 있습니다.
중첩 된 프로세스 대체를 추가 tee
하고 다음과 같이 다른 프로세스를 추가하십시오 .
exec &> >(tee >(tee "/tmp/box-setup.log" | logger -t box-setup))
tee
기본 프로세스 대체 내의 첫 번째 는 STDOUT / STDERR을 터미널 및 중첩 된 프로세스 대체로 전송하며, tee
내부는 파일에 내용을 저장 /tmp/box-setup.log
하고 파이프는 출력을 logger
의 STDIN에도 전송하는 데 사용됩니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다