Bash 腳本 - 如何將 bash 腳本的輸出重新導向到檔案?

Bash 腳本 - 如何將 bash 腳本的輸出重新導向到檔案?

所以我有一個基本文件,顯示記憶體使用情況、開關、線程等,我希望將這些結果列印到日誌文件、文字檔案中。目前,我透過輸入“./file.sh 1 1”啟動命令,而第一個參數確定它將運行該命令的循環次數,第二個參數確定它將休眠多長時間。它基本上是一個 while 循環運行所有這些命令。

我想將結果匯出到日誌檔案中進行跟踪,最後我的目標是讓它運行 24 小時並記錄所有結果。

我基本上希望所有這些都飛入日誌文件,如果我添加 > log.txt 或 >> log.txt 它會按照我的意願將其列印到日誌文件中。但它沒有顯示在終端中。

    echo "Threads:"
        grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }' > log.txt
        echo""
        echo "Free memory:"
        grep MemFree /proc/meminfo > log.txt
        echo ""
        echo "Firefox usage"
        pidstat -C firefox -w -u > log.txt
        echo ""

答案1

如果您想同時記錄到文件並輸出到標準輸出,您可能需要嘗試tee

    echo "Threads:"
    grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }' | tee -a log.txt
    echo""
    echo "Free memory:"
    grep MemFree /proc/meminfo | tee -a log.txt
    echo ""
    echo "Firefox usage"
    pidstat -C firefox -w -u | tee -a log.txt
    echo ""

如果您希望將所有內容傳送到日誌文件,我們可以使用:

(
    echo "Threads:"
    grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }'
    echo""
    echo "Free memory:"
    grep MemFree /proc/meminfo
    echo ""
    echo "Firefox usage"
    pidstat -C firefox -w -u
    echo ""
) | tee -a log.txt

相關內容