帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  使用watch和tail命令查看Linux上的活动

使用watch和tail命令查看Linux上的活动

2024-08-20 16:29:20 2039

使用watch和tail命令查看Linux上的活动


蓝队云小课堂:


watch和tail命令可以帮助监视Linux系统上的活动。

watch和tail命令为持续监视Linux系统上的活动提供了一些有效的选项。

也就是说,你可以通过watch来显示谁已登录,并随着用户登录和注销不断更新,而不是仅仅提出问题并获得答案(例如询问who并获取当前登录用户的列表)。

使用tail,你可以显示文件的底部并在添加内容时查看内容。这种监控一般非常有用,并且比定期运行命令所需的工作更少。


使用 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(将其视为“离开”)选项。例如,如果你只是在等待其他人开始登录系统,则可以选择执行此操作。

你还可以使用 -d(差异)选项突出显示显示输出中的更改。突出显示只会持续一个间隔(默认为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 命令都可以提供自动更新视图,从而使监视任务变得更加容易。


更多小知识,可联系蓝队云一起探讨。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: