The ‘watch’ command is one of those commands that are very useful but not very well known. What it does is continually executes a given command at regular intervals, simulating a real-time style command. This is very useful when you want to monitor using other well known commands which don’t update dynamically on its own.
Following command will execute the command ‘df’ every 2 seconds with the use of the ‘watch’ command.
Even though you are given a live update of the df command. It still can be hard to monitor, when you cannot straight away see what is being updated. This is where the -d or –differences flag will highlight the differences between each update/execution of the given command.
watch -d df
The output above shows the highlighted areas. That has changed since the last execution of the command.
There are further options available for example you can make the interval between executions greater or less with -n or –interval option and the number of seconds you want.
watch -n 30 -d df
Man page of the ‘watch’ command.
WATCH(1) Linux User’s Manual WATCH(1)
watch – execute a program periodically, showing output
watch [-dhvt] [-n <seconds>] [–differences[=cumulative]]
[–help] [–interval=<seconds>] [–no-title] [–version]
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 differ-
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
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
watch -d ’ls -l | fgrep joe’
To see the effects of quoting, try these out
watch echo $$
watch echo ’$$’
watch echo “’”’$$’”’”
You can watch for your administrator to install the latest
watch uname -r
Upon terminal resize, the screen will not be correctly
repainted until the next scheduled update. All –differ-
ences 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
The original watch was written by Tony Rems
<email@example.com> in 1991, with mods and corrections by
Francois Pinard. It was reworked and new features added by
Mike Coleman <firstname.lastname@example.org> in 1999.
1999 Apr 3 WATCH(1)