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

相关内容