代码之家  ›  专栏  ›  技术社区  ›  code_fodder

在后台运行带有top命令的脚本

  •  0
  • code_fodder  · 技术社区  · 5 年前

    我有一个脚本基本上打印了 top -n1 每秒一个文件

    以最简单的形式:

    while [ 1 ] ; do
       top -n1
       sleep 1
    done
    

    如果我像这样运行我的脚本:

    ./my_script.sh > out.log
    

    它运行良好

    如果我在后台运行它:

    ./my_script.sh > out.log &
    

    然后它给我 Stopped(SIGTTOU) 错误。从其他的q/as我发现top试图从stdin中读取,当在后台运行时没有stdin。

    如何将top作为后台任务登录到文件中?

    1 回复  |  直到 5 年前
        1
  •  2
  •   CoolZero    5 年前

    你需要把top写到文件中,然后在一个循环中..

    #!/bin/bash
    while [ 1 ] ; do
       top -b -n 1 > top.txt
       sleep 1
    done
    

    #!/bin/bash
    while :
    do
      top -b -n 1 > top.txt
      sleep 1
    done