Linux 反复执行一条命令--watch命令

这篇具有很好参考价值的文章主要介绍了Linux 反复执行一条命令--watch命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux watch循环命令

在Linux中,我们可能会需要反复的执行一个命令以查看状态的变化,比如之前我在启动一个项目的时候没有什么反应,于是我便自己写脚本反复curl这个端口,下面用输出Hello World举出这个例子:

#!/bin/bash                                                                                                                                                                                          

i=1
for(($i;$i>0; i=$i+1))
do
    echo 'Hello World'[$i]
    sleep 1
done

我们的需求是非常简单地,只需要不断地间隔一秒输出Hello World,但是却需要7行shell代码,这无疑非常非常麻烦,对于我这种对shell语法不熟悉的人还很花时间。
不过,其他开发者们显然也遇到过这种情况,并且已经有人写出了应对这种情况的工具,——watch

Watch 命令

watch [可选参数] [命令]

*为常用的参数

  • -n* : 间隔秒数(如果不写默认间隔2秒)
  • -d* : different,只写这个参数的话,本次刷新发生变化内容会高亮,再次刷新若无变化则不高亮,若是给-d加参数-d=cumulative 则变化后高亮,再次刷新没有变化的话依旧保持高亮状态
  • -g *: 若是输出的内容发生变化则退出watch状态
  • -t : 不写-t的话watch有一个顶上的标题,会显示间隔秒数,当前时间等,加上-t则不显示该标题
  • -b : 若是命令因错误而退出,则发出警报声
  • -e : 停止错误输出更新并在按键后退出命令
  • -c : 解释 ANSI 颜色和样式序列
  • -x : 将用户定义的命令传递给exec,从而减少额外引用的需要
  • -w : 关闭换行并截断长行
  • -h : 显示帮助文本并退出。
  • -v : 显示版本信息并退出。

(1)watch 命令定义了4个观察事件点,即 -b 方法调用前,- e 方法异常后,- s 方法返回后, f 方法结束后。有点像string里面的,切入点面向切入编程,实际上有这个前置通知,后置通知,环绕通知,异常通知还有最终通知。所以可以猜测,Arthas在编写的时候用了同样的代理模式,类似于string框架的模式,对他四个的观察点进行监视,这个虽然没有看到源码,但是可以猜测应该是这样实现的。
(2)4个观察事件点 b 、- e 、- s 默认关闭,- f 默认打开,当指定观察点被打开后,在相应事件点会对观察表达式进行求值并输出。f默认打开,不管你有没有出现异常都能够看到结果
(3)这里要注意方法入参和方法出参的区别,有可能在中间被修改导致前后不一致,除了 b 事件点 params 代表方法入参外,其余事件都代表方法出参
(4)当使用 b 时,由于观察事件点是在方法调用前,此时返回值或异常均不存在

举个🌰

监控当前时间变化

watch 'date' # 间隔2秒监控当前时间变化
watch -n 1 'date' # 间隔1秒监控当前时间变化
watch -d -n 1 'date' # 间隔1秒监控当前时间变化,并将当前变化的内容高亮显示
watch -d=cumulative -n 1 'date' # 间隔1秒监控当前时间变化,并将曾经发生过变化的内容持续高亮显示
watch -g 'date' # 间隔2秒监控时间变化,若是时间发生了变化则退出watch

以上的最后一条命令是一定会在2秒之后退出的,因为秒数从i变成了i+2,触发了「输出内容发生变化」,因此直接退出watch状态。





📜 参考资料

「PhoneixNAP」: How to Use the Linux watch Command with Examples
「阿里云开发者社区」:Watch 命令的参数介绍 | 学习笔记文章来源地址https://www.toymoban.com/news/detail-420374.html

到了这里,关于Linux 反复执行一条命令--watch命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux 执行sudo +命令,显示找不到命令

    1.切换到root;修改/etc/sudoers;找到Defaults env_reset, 将其改为Defaults !env_reset 2.修改用户设置文件:~/.bashrc;增加sudo的别名 参考:

    2024年02月07日
    浏览(34)
  • Linux命令-builtin命令(执行bash内建命令)

    用于执行指定的bash内建命令。 builtin 命令调用的bash内建命令优先于同名的外部命令及同名的shell函数。 shell-builtin(可选):要调用的bash内建命令。 arg(可选):传递给bash内建命令的一到多个参数。 返回该内建命令执行的返回值,除非传递的不是bash内建命令或该内建命令

    2024年02月19日
    浏览(39)
  • 【脚本】 【Linux】循环执行命令

    loop.sh 用法: ./loop.sh 命令内容 时间间隔(毫秒) 循环次数(小于0表示无限循环) ,当命令内容存在空格时,需要用双引号包含。 示例:

    2024年02月07日
    浏览(33)
  • 一条指令在CPU里如何执行?

    本人才疏学浅,如果我的内容有明显的错误,或者有疑问的地方,衷心希望您能和我联系,给出建议和指导,或者与我交流相关知识。我会对你表示无限的感激!欢迎指正! “灵魂画手”上线: 老师上周单独布置给我的任务:让我去搞清楚“ 一条指令在cpu里是如何执行的呢

    2023年04月15日
    浏览(40)
  • linux执行程序运行命令失败,提示找不到命令

    sudo: ./VMware-Workstation-Full-17.0.0-20800274.x86_64.bundle:找不到命令。 经检查,sudo命令正常,该脚本文件的确存在于该目录下。 1.文件是否有执行权限 使用 ls -l 命令查看下该文件的权限: 表示当前文件无执行权限。 ps: - 代表没有权限,r为可读权限,w为可写权限,x为可执行权限

    2024年02月08日
    浏览(32)
  • linux 执行sudo +命令,报错:显示找不到命令

    虚拟机使用sudo命令时,明明脚本存在,但是显示找不到命令 尝试了切换到root用户可以执行命令 查看了管理员用户的系统变量和root用户的系统变量,脚本在环境变量中 查找了网络资料linux 执行sudo +命令,显示找不到命令_linux没有sudo命令-CSDN博客 原因是sudo重置了环境变量,导致

    2024年02月04日
    浏览(39)
  • Linux 系统 history(查看执行命令历史) 命令详解

    history 命令是Linux/Unix系统中的一个常用命令,用于查看当前用户在命令行中执行过的命令历史记录。该命令允许用户查看、搜索、编辑和执行之前执行过的命令,为用户提供了方便、快捷的操作方式。本文将全面详细地讲解 history 命令的各种用法和注意事项,并提供一些实用

    2024年02月16日
    浏览(37)
  • MySQL执行流程_执行一条select语句,期间发生了什么

    MySQL执行流程 server层负责建立连接、分析和执行SQL 包括连接器、查询缓存、解析器、预处理器、优化器、执行器等,所有内置函数和所有跨存储引擎的功能在该层实现 存储引擎层负责数据的存储和提取 索引数据结构就是由存储引擎层实现,不同的存储引擎支持的索引类型也

    2024年02月04日
    浏览(40)
  • Java程序执行Linux命令

    今天这篇文章我们来用Java程序执行Linux命令。 执行一条命令: 执行服务器中 /home/admin 路径下的test.py文件 可以自己写一个py文件 生成一份txt或excel等 看通过java是否执行了py文件。 https://editor.csdn.net/md/?articleId=128816307 执行多条命令: 下面这段代码是做了三条linux命令 1、 复制

    2024年02月15日
    浏览(30)
  • MySQL 一条SQL语句是如何执行的?

    ​ 所以今天我们把MySQL拆解一下,看看里边有哪些零件。下边是MySQL的基本架构示意图。 大体来说,MySQL分为Server层和存储引擎两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数

    2024年02月01日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包