linux watch 命令-定时执行并监视命令输出

linux watch 命令-定时执行并监视命令输出

linux watch 命令


watch 命令简介

在 Linux 系统中,watch 是一个非常实用的命令行工具,它可以按照设定的时间间隔重复执行某个命令,并将结果以全屏方式展示。这个工具非常适合用于持续监控系统运行状态、文件内容变化或其他需要实时观察的场景。


watch 命令的基础格式

watch [参数] 命令

常用参数说明

参数 功能描述 使用示例
`-n` 或 `–interval` 定义刷新间隔时间(单位为秒),默认是2秒 `watch -n 5 date`
`-d` 或 `–differences` 突出显示每次刷新之间的不同之处 `watch -d ls -l`
`-t` 或 `–no-title` 隐藏顶部的时间、命令和刷新频率信息 `watch -t free -h`
`-b` 或 `–beep` 当命令返回非零退出码时发出提示音 `watch -b ping example.com`
`-e` 或 `–errexit` 如果命令出错则停止更新并退出 `watch -e ./check_status.sh`
`-g` 或 `–chgexit` 一旦命令输出发生变化就终止执行 `watch -g ls -l`
`-c` 或 `–color` 识别 ANSI 颜色和格式代码 `watch -c ‘ls –color=always’`

具体应用场景

实时查看内存使用情况

watch -n 1 free -h

该命令每秒刷新一次内存使用状态,其中 -h 参数使数据更直观易懂。

跟踪目录内文件变动

watch -d 'ls -l /var/log'

通过 -d 参数可以高亮显示文件列表的变化,适合用来监控日志目录内容更新。

监控网络连接状态

watch -n 0.5 'netstat -tulnp | grep 80'

每隔0.5秒检查一次 80 端口的连接状况。

查看 CPU 温度变化

watch -n 2 'sensors | grep Core'

每两秒读取一次 CPU 核心温度信息。


进阶使用方法

同时执行多个命令

watch 'date; echo; df -h'

利用分号分隔多个命令,echo 可以在输出之间插入空行。

监控特定用户的进程活动

watch 'ps -u username -o pid,cmd,%cpu,%mem --sort=-%cpu'

实时查看指定用户正在运行的进程,并按 CPU 占用排序。

结合管道与重定向操作

watch 'dmesg | tail -20 > /tmp/dmesg.log; cat /tmp/dmesg.log'

虽然 watch 不直接支持管道,但可通过中间文件实现复杂操作。


使用建议

  1. 结束运行:按下 Ctrl+C 即可终止 watch 进程
  2. 刷新频率控制:过于频繁的刷新(如 0.1 秒)可能会增加系统负担
  3. 命令长度限制:太长的命令会影响阅读体验,推荐封装成脚本调用
  4. 颜色输出问题:部分命令需添加额外参数才能保持色彩,例如 ls –color=always

类似工具对比

工具 主要特性 适用场合
watch 简单直观,屏幕整体刷新 持续观察命令输出变化
tail -f 动态追踪文件新增内容 日志文件增长监测
tmux + 循环命令 具备多窗口管理能力 多种监控任务并行处理
htop 图形化交互式资源监控 系统性能分析

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享