【问题标题】:Bash free command stops workingbash free 命令停止工作
【发布时间】:2012-12-31 15:03:49
【问题描述】:

我正在尝试执行以下操作:

获取 free -mo 的输出,每 30 秒取第二行并将其记录到文件中。

当我跑步时

$free -mo -s 30 

它每 30 秒运行一次并显示输出。

但是当我运行时

$ free -mo -s 30 | head -2 | tail -1

它只运行一次。我无法弄清楚出了什么问题。

free Manual 说 free -s 30 每 30 秒运行一次命令。

【问题讨论】:

  • 使用watch
  • DCoder:这真的应该是一个答案!
  • @MatsPetersson:重新阅读问题后,OP 想要将结果记录到文件中,watch 用于交互式查看并将其输出重定向到文件,控制代码会污染它。 . 可能比仅仅构建一个手动的 while/sleep 循环更多的工作。

标签: linux bash tail free-command


【解决方案1】:

head -2 只返回前两行输出然后退出。 tail -1 返回最后一行,然后退出。当任何程序在管道中退出时,它会终止整个管道,因此当 headtail 完成时,free 会停止。

【讨论】:

    【解决方案2】:

    使用free -mo -s 30 &> test.txt &

    这将获取free 命令的所有输出并将其输出到 test.txt 并在后台运行。

    【讨论】:

      【解决方案3】:

      试试

      free -mos 30 | grep 'Mem:' >yourlog.txt
      

      (但您可能最好考虑使用类似 sar 的方法来捕获此类数据 - 它还可以报告许多其他内容 - 只需推迟过滤/提取,直到您从数据中生成报告)。

      【讨论】:

        【解决方案4】:

        Will Hartung 是对的。而是这样做:

        虽然是真的;做免费-mo |头-2 |尾巴-1;睡30;完成

        【讨论】:

          【解决方案5】:

          感谢您的回答。我试图监视进程的内存利用率。我想我明白了。

          START_TIME=$(date);
          cd /data;
          
          INPUT_DATA=$1;
          CODE_FILE=$2;
          TIMES=$3;
          
          echo "$START_TIME" > "$CODE_FILE.freeMemory_$TIMES.log";
          free -mo -s 30 >> "$CODE_FILE.freeMemory_$TIMES.log" &
          freepid=$!;
          
          sleep 1m;
          #echo "PID generated for free command -- $freepid";
          START_TIME=$(date);
          i=0;
          while [ $i -le $TIMES ]
              do
                      sh runCode.sh $CODE_FILE "output.csv" $INPUT_DATA;
                      i=`expr $i + 1`
              done
          
          END_TIME=$(date);
          echo "process started at $START_TIME and ended at $END_TIME " ;
          sleep 1m;
          kill -9 $freepid;
          END_TIME=$(date);
          echo "$END_TIME" >> "$CODE_FILE.freeMemory_$TIMES.log";
          

          【讨论】:

            猜你喜欢
            • 2018-12-26
            • 2020-12-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-08
            • 2018-01-16
            • 2017-10-08
            • 2016-06-09
            • 2018-12-16
            相关资源
            最近更新 更多