【问题标题】:Bash command time output to .txtBash 命令时间输出到 .txt
【发布时间】:2020-03-28 17:26:54
【问题描述】:

您好,我制作了一个 bash 脚本,目的是测量脚本 download_test.sh 的经过时间、CPU% 和内存使用情况,并将输出放入具有所需输出的 ​​.txt 文件中,例如:

Elapsed time: 1263.75s
Memory usage: 62916 KB
CPU usage: 0%

执行此操作的脚本如下所示:

#!/bin/bash
echo 'RESULTS' >> log.txt
{ /usr/bin/time -f 'Elapsed time: %es\nMemory usage: %M KB\nCPU usage: %P' bash download_test.sh  1 ; }  2>> log.txt

但是,下载终端进度也被定向到 .txt 文件,即

RESULTS

Downloading:  95%|#########5| 827M/870M [00:00<?, ?B/s]
Downloading:  95%|#########5| 828M/870M [00:00<00:11, 3.68MB/s]
...
Elapsed time: 14.67s
Memory usage: 62592 KB
CPU usage: 0%

我不熟悉使用 stderr 和 stdout,所以我误解了它们,我该如何解决这个问题?

【问题讨论】:

  • download.sh 中的某些内容确实将那些“下载”行写入标准错误。你需要抑制它的输出。

标签: bash unix stdout ubuntu-18.04 stderr


【解决方案1】:

我认为这不是stderr。您可以使用以下命令打印所需的行。

awk '/Elapsed/,/CPU/'

试试这个

#!/bin/bash
echo 'RESULTS' >> log.txt
{ /usr/bin/time -f 'Elapsed time: %es\nMemory usage: %M KB\nCPU usage: %P' bash download_test.sh  1 ; } | awk '/Elapsed/,/CPU/' 2>> log.txt

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    相关资源
    最近更新 更多