如何只保存后台进程的前几行

时间:2016-12-07 19:12:28

标签: linux bash service

我正在编写shell脚本以在Linux上启动服务。

我想启动一个程序,并将其pid保存到pid文件中(因此服务可以再次停止它)。

我还想将其标准输出的前几行(100,说)行捕获到一个文件中,并丢弃其余的(因为有很多输出,所以如果我保存它,文件可能会变得太大全部)。

我尝试过以下代码:

    exec 3< <(program 2>&1 &
    echo $! >flags/program.pid )
    (head -n 100 <&3 >program.log
    cat <&3 >/dev/null)&

但是,运行此命令后,日志文件为空。

这可能是因为还没有100行吗?

**重要**我不想捕获整个过程的输出 - 我想丢弃除前100行之外的所有行,否则磁盘将迅速填满。

我已在Bash: Capture output of command run in background阅读了所谓的重复内容,并提出了以下建议代码:

{{1}}

但是,我不了解这里的潜在机制,并且希望得到保证,这不会吞噬资源(它可能一次运行多年,因为它是一项服务,并且程序输出大量数据)。

另外,显然,欢迎提出改进建议。

0 个答案:

没有答案