1 watch命令
1.1 简介
watch 是一个在 Unix 和 Unix-like 系统(包括 Linux 和 macOS)中常用的命令行工具,用于周期性地执行一个命令并显示其输出。
watch 命令会重复运行指定的命令,并显示其输出和错误(通常是第一屏的内容)。这允许你观察程序输出随时间的变化。默认情况下,命令每2秒运行一次,watch 会一直运行直到被中断。
1.2 说明
使用:watch [options] command
options:
- -d ,–difference:显示两次命令执行之间的差异
- -n, --interval seconds:指定更新间隔,也就是指定多久时间执行一次命令
- -t, --no-title:不显示当前命令的标题行
- -e, --errexit:在命令发生错误时冻结更新,并在按键后退出。
- -g, --chgexit:当命令的输出发生变化时退出。
- -w, --no-linewrap:关闭行换行。长行将被截断而不是换行到下一行。这意味着 watch 不会在屏幕上自动折行过长的输出,而是会在屏幕边缘截断它。
错误码解释:
- 0 成功。
- 1 各种失败情况。这通常是一个通用的错误代码,表示发生了某种错误,但没有具体的错误详情。
- 2 创建要监视的进程的子进程失败。这可能是因为系统资源不足、权限问题或其他原因导致的。
- 3 将子进程的 stdout(标准输出)替换为写入侧的管道失败。这通常与管道创建或配置有关。
- 4 命令执行失败。这表示 watch 尝试运行的命令本身遇到了问题,没有成功执行。
- 5 关闭子进程写管道失败。这通常发生在尝试关闭子进程与 watch 之间通信的管道时。
- 7 IPC(进程间通信)管道创建失败。IPC 管道是 watch 和其子进程之间通信的方式,如果创建失败,则 watch 无法正常工作。
- 8 使用 waitpid(2) 获取子进程返回值失败,或者命令因错误而退出。waitpid 是一个系统调用,用于等待子进程结束并获取其状态。如果失败,可能是因为子进程已经以错误状态退出,或者与 waitpid 相关的系统调用失败。
- other watch 将传播命令的退出状态作为子进程的退出状态。这意味着如果
环境变量:
- WATCH_INTERVAL:更新间隔,遵循与 --interval 命令行选项相同的规则。
1.3 案例
1、重复执行uptime命令
watch uptime
2、显示两次命令执行结果差异
# 监视目录内容的变化
watch -d ls -l
# 每隔一秒高亮显示网络链接数的变化情况:
watch -n 1 -d netstat -ant
# 监测当前目录中test.txt文件的变化:
watch -d 'ls -l|grep test.txt'
## 注意:使用管道符需要用 '' 引起来
3、只想查看smile用户的文件
watch -d 'ls -l |fgrep smile'
4、每隔 n s执行一次命令
watch -n 10 sleep 1
## 每10秒一次输出系统的平均负载
watch -n 10 'cat /proc/loadavg'
# 监测磁盘inode和block数目变化情况:
watch -n 1 "df -i;df
总结
watch多用于对命令的监视,在使用的时注意:使用管道符需要用 ‘’ 引起来