watch
runs command repeatedly, displaying its output (the first screenfull). This allows you to watch the program output change over time. By default, the program is run every 2 seconds; use -n or --interval to specify a different interval.
Function: Execute a program periodically, showing output fullscreen
Syntax: watch [options] command
Syntax: watch [-bdehpvtx] [-n seconds] [--beep] [--color] [--differences[=cumulative]] [--errexit] [--exec] [--help] [--interval=seconds] [--no-title] [--precise] [--version] command
watch runs command repeatedly, displaying its output (the first screenfull). This allows you to watch the program output change over time. By default, the program is run every 2 seconds; use -n or --interval to specify a different interval.
The -d
or --differences
flag will highlight the differences between successive updates. The --cumulative option makes highlighting "sticky", presenting a running display of all positions that have ever changed. The -t or --no-title option turns off the header showing the interval, command, and current time at the top of the display, as well as the following blank line.
watch will run until interrupted.
Note that command is given to "sh -c" which means that you may need to use extra quoting to get the desired effect.
Note that POSIX option processing is used (i.e., option processing stops at the first non-option argument). This means that flags after command don't get interpreted by watch itself.
- To watch for mail, you might do
watch -n 60 from
- To watch the contents of a directory change, you could use
watch -d ls -l
- If you're only interested in files owned by user joe, you might use
watch -d 'ls -l | fgrep joe'
- To see the effects of quoting, try these out
watch echo $$
watch echo '$$'
watch echo "'"'$$'"'"
- To see the effect of precision time keeping, try adding -p to
watch -n 10 sleep 1
- You can watch for your administrator to install the latest kernel with
watch uname -r
(Note that -p isn't guaranteed to work across reboots, especially in the face of ntpdate (if present) or other bootup time-changing mechanisms)
-d, --differences[=permanent]
Highlight the differences between successive updates. If
the optional permanent argument is specified then watch
will show all changes since the first iteration.
-n, --interval seconds
Specify update interval. The command will not allow
quicker than 0.1 second interval, in which the smaller
values are converted. Both '.' and ',' work for any
locales. The WATCH_INTERVAL environment can be used to
persistently set a non-default interval (following the
same rules and formatting).
-p, --precise
Make watch attempt to run command every --interval
seconds. Try it with ntptime (if present) and notice how
the fractional seconds stays (nearly) the same, as opposed
to normal mode where they continuously increase.
-t, --no-title
Turn off the header showing the interval, command, and
current time at the top of the display, as well as the
following blank line.
-b, --beep
Beep if command has a non-zero exit.
-e, --errexit
Freeze updates on command error, and exit after a key
press.
-g, --chgexit
Exit when the output of command changes.
-c, --color
Interpret ANSI color and style sequences.
-x, --exec
Pass command to exec(2) instead of sh -c which reduces the
need to use extra quoting to get the desired effect.
-w, --no-linewrap
Turn off line wrapping. Long lines will be truncated
instead of wrapped to the next line.
-h, --help
Display help text and exit.
-v, --version
Display version information and exit.
0 Success.
1 Various failures.
2 Forking the process to watch failed.
3 Replacing child process stdout with write side pipe
failed.
4 Command execution failed.
5 Closing child process write pipe failed.
7 IPC pipe creation failed.
8 Getting child process return value with waitpid(2)
failed, or command exited up on error.
other The watch will propagate command exit status as
child exit status.
The behaviour of watch is affected by the following environment variables.
WATCH_INTERVAL Update interval, follows the same rules as the --interval command line option.
POSIX option processing is used (i.e., option processing stops at the first non-option argument). This means that flags after command don't get interpreted by watch itself.
Upon terminal resize, the screen will not be correctly repainted until the next scheduled update. All --differences highlighting is lost on that update as well.
Non-printing characters are stripped from program output. Use "cat -v" as part of the command pipeline if you want to see them.
The original watch was written by Tony Rems rembo@unisoft.com in 1991, with mods and corrections by Francois Pinard. It was reworked and new features added by Mike Coleman mkc@acm.org in 1999.
https://www.youtube.com/watch?v=kIoZDUd5DKw CppCon 2019: Matt Godbolt: Behind compiler explorer.
watch
command was used in compiler explorer!
UNIX script for generating assembley from c++ code!
watch "g++ /tmp/test.cc -std=c++0x -02 -c -S -o - -masm=intel \
c++filt \
grep -vE '\s+\.'"
Run with TMUX. Code on one pane and result on another! Whenever the code is changed assemley code is auto generated. (Here, every 2 seconds). We get a interactive shell!