【问题标题】:How to use the "watch" command with SSH如何在 SSH 中使用“watch”命令
【发布时间】:2021-03-07 15:49:56
【问题描述】:

我有一个监控特定服务器的脚本,提供磁盘使用情况、CPU 使用情况等。我正在使用 2 个 Ubuntu VM:我使用 SSH 在服务器上运行脚本(来自第一个 VM 的ssh user@ip < script.sh),我想让它实时显示值,所以我尝试了在这里找到的 2 种方法:

1。 whileclear 循环

第一种方法是使用带有“clear”的while循环来使脚本多次运行,每次都给出新值并清除以前的输出,如下所示:

while true
do
      clear; 
      # bunch of code
done

这里的问题是它没有清除终端,它只是不断打印新的结果。

2。 watch

第二种方法使用watch

watch -n 1 Script.sh

这在本地机器上运行良好(监控脚本所在的当前机器),但我找不到让它通过 SSH 运行的方法。类似的东西

ssh user@ip < 'watch -n 1 script.sh'

原则上有效,但要求脚本存在于服务器上,我想避免这种情况。有没有办法运行watch 来远程执行(通过SSH)本地机器上的脚本?

【问题讨论】:

    标签: linux bash ssh monitoring watch


    【解决方案1】:

    对于您的第二种方法(使用 watch),您可以改为使用 SSH 命令和管道输入脚本在本地(从第一个 VM 中)运行 watch,如下所示:

    watch -n 1 'ssh user@ip < script.sh'
    

    这样做的缺点是它会在每次watch 迭代中重新连接(即每秒一次),而某些服务器配置可能不允许这样做。请参阅here,了解如何让 SSH 重复使用相同的连接进行串行 ssh 运行。

    但如果你想做的是监控服务器,我真正推荐的是使用像“telegraf”这样的监控系统。

    【讨论】:

    • 我已经尝试过了,但是没有用 :( 。谢谢顺便说一句。
    • @yacineR 最初写在答案中的命令缺少 ssh user@ip &lt; script.sh 周围的引号 - 用引号重试,它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 2020-06-28
    相关资源
    最近更新 更多