linux命令(6/9):watch命令

watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化    !

FreeBSD和Linux下watch命令的不同 
在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。 
-d, --differences[=cumulative]       高亮显示变动
-n, --interval=                      周期(秒)
-t 或-no-title                       会关闭watch命令在顶部的时间间隔
如:watch -n 1 -d netstat -ant
而在FreeBSD下的watch命令是查看其它用户的正在运行的操作,watch允许你偷看其它terminal正在做什么,该命令只能让超级用户使用。

实例:
#watch uptime
#watch -t -d uptime
#watch -d -n 1 netstat -ntlp
#watch -d ’ls -l | fgrep goface’   //监测goface的文件
#watch -t -differences=cumulative uptime
#watch -n 60 from  //监控mail
#watch -n 1 ”df -i;df”  //监测磁盘inode和block数目变化情况
#watch -n 60 -d du -ah //查看usb3.0拷贝到该目录下面的速度


有趣的linux命令:看看哪些文件正在变!
watch -d -n 1 'df; ls -Alt -F /path'


在使用这条命令时你需要替换其中的 /path 部分,watch 是实时监控工具,
-d 参数会高亮显示变化的区域,-n 1 参数表示刷新间隔为 1 秒。
df; ls -FlAt /path 运行了两条命令,df 是输出磁盘使用情况,ls -FlAt 则列出 /path 下面的所有文件。
ls -FlAt 的参数详解:
-F 在文件后面加一个文件符号表示文件类型,共有 */=>@| 这几种类型,* 表示可执行文件,/ 表示目录,= 表示接口( sockets) ,> 表示门, @ 表示符号链接, | 表示管道。 
-l 以列表方式显示 
-A 显示 . 和 .. 
-t 根据时间排序文件

 

1.命令格式:

watch[参数][命令]                      命令功能:     可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令

3.命令参数:

-n或--interval  watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。

-d或--differences  用-d或--differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。

-t 或-no-title  会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。

  -h, --help 查看帮助文档

4.使用实例:

实例1:

命令:每隔一秒高亮显示网络链接数的变化情况

watch -n 1 -d netstat -ant
说明:其它操作:切换终端: Ctrl+x                      退出watch:Ctrl+g

实例2:每隔一秒高亮显示http链接数的变化情况

命令:watch -n 1 -d 'pstree|grep http'

说明:每隔一秒高亮显示http链接数的变化情况。 后面接的命令若带有管道符,需要加''将命令区域归整。

实例3:实时查看模拟攻击客户机建立起来的连接数

命令:watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'                      说明:

实例4:监测当前目录中 scf' 的文件的变化

命令:watch -d 'ls -l|grep scf' 

 

实例5:10秒一次输出系统的平均负载

命令:watch -n 10 'cat /proc/loadavg'

16 个Linux 服务器监控命令和watch

要让服务器保持最佳性能,你应该将 Linux 服务器的运行级别 runlevel 设置为 3 ,就是控制台模式,当你需要图形化桌面的时候使用 startx 命令来启动它。

如果你的服务器启动后就直接进入图形界面,你需要修改配置 /etc/inittab 找到 initdefault 一样,将 id:5:initdefault 修改为 id:3:initdefault。

如果你没找到 /etc/inittab 文件,那就创建一个新的,文件内容增加 id:3 这么一行。这样下次服务器启动的时候就不会进入图形界面。如果你不想等到服务器重启的时候才生效,你可以执行 init 3 这个命令。

一旦你的服务器是在控制台模式下运行,你就可以开始我们接下来的内容。

iostat

iostat 命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。要特别注意 iostat 统计结果中的 %iowait 值,太大了表明你的系统存储子系统性能低下。

meminfo 和 free

Meminfo 可让你获取内存的详细信息,你可以使用 cat 和 grep 命令来显示 meminfo 信息:

1 cat /proc/meminfo

 

另外你可以使用 free 命令来显示动态的内存使用信息,free 只是给你大概的内存信息,而 meminfo 提供的信息更加详细。例如在 oschina 上的 free 命令执行结果:

mpstat

mpstat mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

再来看看 oschina 上的 mpstat 命令执行结果:

关于 mpstat 执行结果中的参数意思请参考此贴

netstat

Netstat 和 ps 命令类似,是 Linux 管理员基本上每天都会用的工具,它显示了大量跟网络相关的信息,例如 socket 的使用、路由、接口、协议、网络等等,下面是一些常用的参数:

1 -a Show all socket information
2 -r Show routing information
3 -i Show network interface statistics
4 -s Show network protocol statistics

 

nmon

Nmon, 是 Nigel's Monitor 的缩写,是一个使用很普遍的开源工具,用以监控 Linux 系统的性能。Nmon 监控多个子系统的性能数据,例如处理器的使用率、内存使用率、队列、磁盘I/O统计、网络I/O统计、内存页处理和进程信息。Nmon 也提供了一个图形化的工具:

sjvn_LinuxServerMonitoring_nmon.png

要运行 nmon,你可以在命令行中启动它,然后选择要监控的子系统,这些子系统都对应有一个快捷键,例如输入 c 可查看 CPU 信息,m用于查看内存,d用来查看磁盘信息等,你也可以使用 -f 命令将 nmon 的执行结果保存到一个 CSV 文件中,便于日后分析。

在每日的监控工作中,我发现 nmon 是我最常用的工具。

pmap

pmap 命令用来报告每个进程占用内存的详细情况,可用来看是否有进程超支了,该命令需要进程 id 作为参数。

ps 和 pstree

ps 和 pstree 命令是 Linux 系统管理员最好的朋友,都可以用来列表正在运行的所有进程。ps 告诉你每个进程占用的内存和 CPU 处理时间,而 pstree 显示的信息没那么详细,但它以树形结构显示进程之间的依赖关系,包括子进程信息。一旦发现某个进程有问题,你可以使用 kill 来杀掉它。

sar

sar 程序是系统监控工具里的瑞士军刀。该程序包含三个工具:sar 用来显示数据,sa1 和 sa2 用来收集数据并保存。sar 可用来显示 CPU 使用率、内存页数据、网络 I/O 和传输统计、进程创建活动和磁盘设备的活动详情。sar 和 nmon 最大的不同就是 sar 跟适合用作长期的监控,而 nmon 可以让你快速的了解系统当前状态。

strace

strace 经常被认为是程序员调试的工具,但不止如此。它可以记录进程进行系统调用的详情,因此它也是一个非常好的诊断工具,例如你可以使用它来找出某个程序正在打开某个配置文件。

Strace 也有一个缺陷,但它在跟踪某个进程时会让该进程的性能变得非常差,因此请谨慎使用。

tcpdump

Tcpdump 是一个简单、可靠的网络监控工具,用来做基本的协议分析,看看那些进程在使用网络以及如何使用网络。当然,如果你要获取跟详细的信息,你应该使用 Wireshark (下面我们会介绍).

top

top 命令显示当前的活动进程,默认它是按消耗 CPU 的厉害程度进行排序,每5秒钟刷新一次列表,你也可以选择不同的排序方式,例如 m 是按内存占用方式进行排序的快捷键。

uptime

uptime 命令告诉你这台服务器从开机启动到现在已经运行了多长时间了。同时也包含了从启动到现在服务器的平均负载情况,看看 oschina 的数据:

我已经忘了上次是为什么重启机器了,好像是换了个机柜。

vmstat

你可以使用 vmstat 来监控虚拟内存,一般 Linux 上的开发者喜欢使用虚拟内存来获得最佳的存储性能。该命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

在 oschina 上执行 vmstat 的结果:

Wireshark

Wireshark, 前身是 Ethereal ,是一个网络协议检测程序,让您经由程序抓取运行的网站的相关资讯,包括每一封包流向及其内容、资讯可依操作系统语系看出,方便查看、监控TCP session动态等等.

 

 

 

watch 是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一样,watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。

举例来说,Linux 系统有一个基础命令 w,可以显示当前的 uptime、负载还有登录的用户,非常方便,但是如果我想监测这些数据,看看有没有新用户登入,看看某段的时间的负载是不是太大之类的,就得手动一遍遍的运行这个命令,然后查看结果,虽然命令只有一个字母,但是还是很郁闷……

watch 就是干这个用的,直接在 watch 后面接你想运行的命令,watch 就会帮你重复运行,并把每次的结果都更新在屏幕上~

要想监测 w 命令的运行结果,只要 watch w 就可以了:

默认 watch 会以 2s 的间隔重复运行命令,你也可以用 -n 参数指定时间间隔~

还有一个实用的参数是 -d,这样 watch 会帮你高亮显示变化的区域,这样更加一目了然了~ 

posted @ 2018-06-09 12:05  konglingbin  阅读(1901)  评论(0编辑  收藏  举报