【问题标题】:Output from command running in Linux terminal to a text file在 Linux 终端中运行的命令输出到文本文件
【发布时间】:2015-04-21 09:53:00
【问题描述】:

我有一个在 Linux 终端中运行的程序。当它运行时,数据正在输出到终端窗口,数据每秒都在变化。

窗口示例:

a b c d

d b c a

c a d b

来自机器 2 的数据 - 时间:15:29:31

11 13 17 18 #换行

21 18 17 16 #换行

18 17 11 9 #换行

我想以 10 分钟间隔将窗口中的数据记录到 1 个文件中。什么应该是一个 Bash 脚本,它可以读取窗口的内容,每 10 分钟将其解析为第 4 行及以下并将其附加到 1 个文件中?

期望结果示例 - log.txt:

来自机器 2 的数据 - 时间:15:40:00

58 47 61 34

17 8 3 2

来自机器 2 的数据 - 时间:15:50:00

5 7 8 12

35 41 70 25

33 41 11 14

来自机器 2 的数据 - 时间:16:00:00

12 14 15 16

13 18 19 20

24 21 22 23

在我看来,这项任务的第二部分可以这样解决: grep -A 100 "来自机器的数据" ... |尾 -n +2 >> log.txt (不知道应该用什么代替...) 但关于第一部分还有更多的不清楚。也许我应该看到 STDOUT 的话题。 需要你的帮助。

【问题讨论】:

    标签: linux bash scripting terminal output


    【解决方案1】:

    嗯,您的问题有几个部分都可以通过谷歌搜索得到。

    第 1 部分...

    为了获得第 4 行或第 4000 行或文件的任何行,您可以按照以下讨论进行操作:How can I extract a predetermined range of lines from a text file on Unix?

    第 2 部分...

    然后有一个问题是每 10 分钟做一次?您应该从第 1 部分(无论您选择做什么)中获取您的解决方案,并将其放入 .sh 文件中,并通过 crontab 每 10 分钟运行一次该脚本,您可以通过

    访问该脚本
    crontab -e
    

    您可以在此处阅读更多相关信息:https://serverfault.com/questions/248305/running-cron-on-every-10-minutes

    根据您的评论编辑第 3 部分:

    使用 screen 将您正在运行的进程置于后台,然后打开另一个终端窗口并在其中做任何您想做的事情。您还可以使用 ssh 连接到同一台机器并运行另一个终端会话。您不仅需要在 1 个屏幕上运行 1 个终端会话,而且您一无所知。 Google nohup 或 screen。

    【讨论】:

    • 感谢您的链接。但问题是数据必须从终端窗口中提取,而不是从文本中提取。正在运行的程序占用了终端,我无法在这个窗口中启动任何其他脚本或命令(sed、awk.grep)。
    猜你喜欢
    • 2013-04-14
    • 2013-10-08
    • 2020-11-09
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    相关资源
    最近更新 更多