내 컴퓨터에서 실행 시 많은 출력을 생성하는 스크립트를 실행하고 있습니다. 내용에 관심이 없기 때문에 해당 출력을 로 리디렉션하고 /dev/null
파일에서 오류를 포착합니다(스크립트가 실패하는 경우에만 관심이 있기 때문입니다). 그러나 파일의 오류에는 타임스탬프가 포함되어 있지 않습니다.
stderr 리디렉션에 타임스탬프를 추가하는 방법이 있습니까? 이것은 내 명령이지만 타임스탬프를 추가하는 방법을 모르겠습니다.
myScript.sh 2>> logfile.txt 1>/dev/null
날짜를 인쇄하기 위해 myScript.sh를 수정할 수 없으므로 그것도 옵션이 아닙니다. 나는 다음과 같은 것을 시도했습니다 :
myScript.sh 2>> logfile.txt << date
그러나 이것은 작동하지 않습니다.
답변1
ts
from은 moreutils
일부 출력의 각 줄에 타임스탬프를 추가하는 데 사용할 수 있습니다.
myScript.sh 2>&1 > /dev/null | ts >> logfile.txt
비슷한 형식으로 타임스탬프 형식을 지정할 수 있습니다 strftime()
.
$ seq 4 | ts '%FT%.T%z:'
2023-06-06T14:11:15.244613+0100: 1
2023-06-06T14:11:15.244693+0100: 2
2023-06-06T14:11:15.244729+0100: 3
2023-06-06T14:11:15.244759+0100: 4
예를 들어 마이크로초 정밀도의 ISO8601 타임스탬프 형식입니다.
답변2
나도 추천한다 ts
. 그리고 출력프로세스 교체여기에 적합:
myScript.sh 2> >(ts >> logfile.txt) 1>/dev/null
# ............^ yes that space is required.
답변3
다음과 같이 스크립트 실행 전에 인쇄 날짜를 호출할 수 있습니다.
echo "$(date >> logfile.txt; ./myscript.sh 2>> logfile.txt 1>/dev/null)