Linux

linux + 將標準輸出和標準錯誤寫入日誌和控制台

  • April 24, 2018

日誌=/tmp/log.txt

以下語法將所有標準輸出和標準錯誤寫入 log.txt 文件

執行 > $log 2>&1

我們想要的是將標準輸出和標準錯誤寫入 log.txt,同時將標準輸出 + 標準錯誤寫入控制台

是否可以 ?

可能有不那麼冗長的方法可以做到這一點,但經典的解決方案是這樣的:

#!/bin/bash

trap 'rm $TMP' 0
TMP=$(mktemp)
rm $TMP
mkfifo $TMP
tee < $TMP ${log:-/tmp/log.txt} &
exec > $TMP 2>&1

不言而喻,這裡存在大量的安全性和可靠性問題,因為任何其他程序都可以讀取或寫入 fifo。如果您想做這種事情,最好使用一個簡單的包裝器,將腳本的輸出通過管道傳輸到tee.

引用自:https://unix.stackexchange.com/questions/439737