Linux
linux + 將標準輸出和標準錯誤寫入日誌和控制台
日誌=/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
.