나는 stdout을 파일로 복사 하는이 대답을 사용했습니다 .
$ cat /etc/dehydrated/syncNexusCertificatesHook.sh
#!/bin/bash -ex
exec &> >(ts '[%Y-%m-%d %H:%M:%S]' | tee -a /var/log/dehydrated.log >&2 )
...
스크립트를 실행할 때 perl: warning: Setting locale failed.
터미널에 인쇄되었지만 로그 파일 에는 인쇄되지 않았습니다.
스크립트의 모든 출력을 타임 스탬프와 함께 콘솔에 인쇄하고 로그 파일에 저장하고 싶습니다. 이것을 어떻게 달성 할 수 있습니까?
명령의 stdout과 stderr를 명령 시퀀스로 리디렉션하고 마지막으로 콘솔과 파일 모두로 리디렉션하려면 다음 구문을 사용하면됩니다.
command |& ts '[%Y-%m-%d %H:%M:%S]' | tee file
이것의 동의어입니다
command 2>&1 | ts '[%Y-%m-%d %H:%M:%S]' | tee file
또는 두 스트림을 프로세스 대체로 리디렉션
command &> >(ts '[%Y-%m-%d %H:%M:%S]' | tee file)
또는 출력을 리디렉션 한 다음 stderr를 stdout의 복사본으로 만듭니다.
command > >(ts '[%Y-%m-%d %H:%M:%S]' | tee file) 2>&1
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다