使用 watch 和 tail 命令监视 Linux 上的活动
  

暴躁的钢索 6022人觉得有帮助

{{ttag.title}}
使用 watch 命令
使用 watch 的最简单示例之一是使用命令 watch who。你会看到一个列表,其中显示了谁登录了,以及他们登录的时间和登录位置。请注意,默认设置是每两秒更新一次显示(左上角),日期和时间(右上角)将按该间隔自行更新。用户列表将随着用户登录和注销而增长和缩小。
  • $ watch who

此命令将显示如下所示的登录列表:
  • Every 2.0s: who                              dragonfly: Thu Feb 27 10:52:00 2020
  • nemo     pts/0        2020-02-27 08:07 (192.168.0.11)
  • shs      pts/1        2020-02-27 10:58 (192.168.0.5)

你可以通过添加 -n 选项(例如 -n 10)来修改更新间的不同秒数,以修改更新间隔,从而获取较少的更新频率。
  • $ watch -n 10 who

上述命令将以新的间隔显示,并且显示的时间更新频率较低,从而使显示时间与所选间隔保持一致。
  • Every 10.0s: who                             dragonfly: Thu Feb 27 11:05:47 2020
  • nemo     pts/0        2020-02-27 08:07 (192.168.0.11)
  • shs      pts/1        2020-02-27 10:58 (192.168.0.5)

如果你希望仅查看命令的输出,而不是标题(前 2 行),则可以通过添加 -t(无标题)选项来省略这些行。
  • $ watch -t who

然后,你的屏幕将显示如下所示:
  • nemo     pts/0        2020-02-27 08:07 (192.168.0.11)
  • shs      pts/1        2020-02-27 10:58 (192.168.0.5)

如果每次运行监视的命令时,输出都是相同的,则只有标题行(如果未省略)会更改。其余显示的信息将保持不变。
如果你希望 watch 命令在它正在监视的命令的输出发生更新后立即退出,则可以使用 -g(将其视为“离开go away”)选项。例如,如果你只是在等待其他人开始登录系统,则可以选择执行此操作。
你还可以使用 -d(差异differences)选项突出显示显示输出中的更改。突出显示只会持续一个间隔(默认为 2 秒),但有助于引起你对更新的注意。
下面是一个更复杂的示例,该示例使用 watch 命令显示正在侦听连接的服务及其使用的端口。虽然输出不太可能更改,但它会提醒你任何新服务正在启动或关闭。
  • $ watch 'sudo lsof -i -P -n | grep LISTEN'

值得注意的是,正在运行的命令需要用引号扩起来,以确保不会将 watch 命令的输出发送到 grep 命令。
使用 watch -h 命令将为你提供命令选项的列表。
  • $ watch -h
  • Usage:
  • watch [options command
  • Options:
  •   -b, --beep             beep if command has a non-zero exit
  •   -c, --color            interpret ANSI color and style sequences
  •   -d, --differences[=<permanent
  •                          highlight changes between updates
  •   -e, --errexit          exit if command has a non-zero exit
  •   -g, --chgexit          exit when output from command changes
  •   -n, --interval <secs>  seconds to wait between updates
  •   -p, --precise          attempt run command in precise intervals
  •   -t, --no-title         turn off header
  •   -x, --exec             pass command to exec instead of "sh -c"
  • -h, --help     display this help and exit
  • -v, --version  output version information and exit

使用 tail -f
tail -f 命令与 watch 有一些相同之处。它也会在添加文件时显示文件的底部和其他内容。你不必一次又一次地运行 tail 命令,而是运行一个命令并获得可重复更新显示视图的结果。例如,你可以使用如下命令查看系统日志:
  • $ tail -f /var/log/syslog

某些文件(如 /var/log/wtmp)不适合这种类型的处理,因为它们的格式不是普通文本文件,但是通过组合 watch 和 tail,你可以获得类似的结果,如下所示:
  • watch 'who /var/log/wtmp | tail -20'

无论有多少用户仍处于登录状态,此命令都将只显示最近的 5 次登录。如果发生其他登录,显示结果将添加一行记录并删除顶行记录。
  • Every 60.0s: who /var/log/wtmp | tail -5    dragonfly: Thu Feb 27 12:46:07 2020
  • shs      pts/0        2020-02-27 08:07 (192.168.0.5)
  • nemo     pts/1        2020-02-27 08:26 (192.168.0.5)
  • shs      pts/1        2020-02-27 10:58 (192.168.0.5)
  • nemo     pts/1        2020-02-27 11:34 (192.168.0.5)
  • dory     pts/1        2020-02-27 12:14 (192.168.0.5)

对你有时可能想要监视的信息,无论监视进程、登录名还是系统资源,watch 和 tail -f 命令都可以提供自动更新视图,从而使监视任务变得更加容易。

打赏鼓励作者,期待更多好文!

打赏
2人已打赏

HNing 发表于 2022-12-5 16:28
  
感谢分享,此内容属于基础的linux查看命令,作者详细介绍了此命令的使用方法以及和tail命令的区别,内容还是不错的,也非常有学习参考意义,为你点赞
一个无趣的人 发表于 2022-11-21 10:55
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
平凡的小网工 发表于 2022-11-23 09:39
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
技术咨询
功能体验
干货满满
新版本体验
2023技术争霸赛专题
标准化排查
产品连连看
GIF动图学习
信服课堂视频
运维工具
自助服务平台操作指引
秒懂零信任
通用技术
技术晨报
每日一记
用户认证
安装部署配置
安全攻防
SDP百科
设备维护
答题自测
sangfor周刊
资源访问
深信服技术支持平台
社区帮助指南
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
云计算知识
原创分享
解决方案
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
迁移
玩转零信任
山东区技术晨报
地址转换
虚拟机
存储
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

217
274
151

发帖

粉丝

关注

本版达人

皮皮虾·真

本周建议达人

郑州网络

本周分享达人

二进制网络

本周提问达人