The ‘watch’ command

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.

watch df

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


Watch Command Difference Option Picture

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-
ent 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 “’”’$$’”’”

You  can watch for your administrator to install the latest
kernel with

watch uname -r

(Just kidding.)

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
see them.

The   original   watch   was   written   by    Tony    Rems
<>  in  1991, with mods and corrections by
Francois Pinard.  It was reworked and new features added by
Mike Coleman <> in 1999.

1999 Apr 3                          WATCH(1)

Be First to Comment

    Leave a Reply