您能否强制 SSH“watch”命令附加输出而不是覆盖?

您能否强制 SSH“watch”命令附加输出而不是覆盖?

我正在尝试通过 putty 查看网络统计信息,并希望每秒将统计信息写入日志文件。我已将 putty 配置为将 ssh 会话记录到日志文件中。但是,我正在努力发出一个腻子命令,该命令重复发出命令来提取统计信息。

我的第一个方法是使用“watch”命令。这对于每秒执行该命令来说效果很好,但是,每次更新时都会覆盖终端输出,并且日志文件不会显示历史记录。

我的问题:如何配置 watch 命令来附加会话输出,而不是仅仅重复覆盖行?

答案1

手表实用程序使用curses来初始化和刷新屏幕,所以我认为你正在逆流而上,试图使其附加而不是覆盖。相反,我建议使用无限 shell 循环:

while :
do
  ss -s     ## for example
  sleep 60  ## for example
done

这将以滚动/附加的方式按照您想要的时间间隔输出您想要的统计数据,并且也可以使用 Control-C 中断,就像watch这样。

确实如此不是提供手表的任何功能,例如突出显示差异、提供命令标题或在各种条件下退出。您可以通过手动发出测试命令和/或将命令返回代码的测试添加到break循环之外来解决其中的一些问题。

答案2

为什么不使用简单的 shell 脚本来一遍又一遍地运行命令并将输出写入文件。像这样的东西:

#!/usr/bin/env bash
while true;
do
 free >> file.txt
 sleep 2
done

free是一个在linux系统上输出空闲RAM的命令。使用您的运行命令更改它。>>将把输出附加到file.txt.您可以根据需要将该sleep选项更改为n秒数。

注意:此脚本将无限期运行,一旦有足够的日志,您需要停止它(CTRL + C)。

相关内容