watch
execute a program periodically, showing output fullscreen
Synopsis
watch
[options] command
add an example, a script, a trick and tips
examples
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 or other bootup
time-changing mechanisms)
source
bash watch command with colors preserved
I think it may not be possible with the 'watch' command. Here is
a longer way of doing it:
while true; do clear; date;echo;ls -al --color; sleep 2; done
You could put this in a script, for example:
echo "while true; do clear; date;echo;\$*;sleep 2; done" > watch2
chmod +x watch2
./watch2 ls -al --color
To clarify, here's why I think it's not possible with the 'watch'
command. See what happens if you use cat -v:
watch "ls -al --color|cat -v"
It shows you the color control characters...which I think is not
what you want.
source
Store the output of date and watch command to a file
watch
is meant for output to a display. If you
simply want to run a command every X seconds then you should just
use a delay loop for that.
while true ; do somecommand ; sleep 2 ; done
source
Is there a linux command that lets me color-code the result of another command?
I think you can color
the man pages, however (after running several Google searches, I don't
think what you're looking for exists.
source
Linux watch command: "--differences" not working
Why not redirect output to a file using
>>
And then do tailf
on that file ?
source
How do I use the watch and jobs commands together in Bash?
The watch
command is documented as follows:
SYNOPSIS
watch [-dhvt] [-n <seconds>] [--differences[=cumulative]] [--help]
[--interval=<sec-onds>] [--no-title] [--version] <command>
[...]
NOTE
Note that command is given to "sh -c" which means that you may need to
use extra quoting to get the desired effect.
The part about giving the command to sh -c
means the
jobs
command you are running via watch
is running in a different shell session than the one that spawned
the job, so it cannot be seen that other shell. The problem is
fundamentally that jobs
is a shell built-in and must
be run in the shell that spawned the jobs you want to see.
The closest you can get is to use a while loop in the shell that
spawned the job:
$ while true; do jobs; sleep 10; done
You could define a function in your shell startup script to make
that easier to use:
myjobwatch() { while true; do jobs; sleep 5; done; }
Then you just have to type myjobwatch
.
description
watch
runs command repeatedly, displaying its output and
errors (the first screenfull). This allows you to watch the
program output change over time. By default, the program is
run every 2 seconds. By default, watch will run until
interrupted.
options
-d,
--differences [permanent]
Highlight the differences
between successive updates. Option will read optional
argument that changes highlight to be permanent, allowing to
see what has changed at least once since 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.
-p,
--precise
Make watch attempt to
run command every interval seconds. Try it
with ntptime 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
sequences.
-x,
--exec
command is given to
sh -c which means that you may need to use
extra quoting to get the desired effect. This with the
--exec option, which passes the command to
exec(2) instead.
-h,
--help
Display help text and exit.
-v,
--version
Display version information and
exit.
exit status
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
Closign 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.
note
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.
bugs
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.
Combining
Characters that are supposed to display on the character at
the last column on the screen may display one column early,
or they may not display at all.
Combining
Characters never count as different in
--differences mode. Only the base
character counts.
Blank lines
directly after a line which ends in the last column do not
display.
--precise
mode doesn’t yet have advanced temporal distortion
technology to compensate for a command that takes
more than interval seconds to execute. watch
also can get into a state where it rapid-fires as many
executions of command as it can to catch up from a
previous executions running longer than interval (for
example, netstat taking ages on a DNS lookup).
authors
The original watch was
written by Tony Rems (rembo[:at:]unisoft[:dot:]com) in
1991, with mods and corrections by Francois Pinard. It was
reworked and new features added by
Mike Coleman (mkc[:at:]acm[:dot:]org) in 1999. The beep,
exec, and error handling features were added by
Morty Abzug (morty[:at:]frakir[:dot:]org) in 2008. On a not
so dark and stormy morning in March of 2003,
Anthony DeRobertis (asd[:at:]suespammers[:dot:]org) got
sick of his watches that should update every minute
eventually updating many seconds after the minute started,
and added microsecond precision. Unicode support was added
in 2009 by Jarrod Lowe (procps[:at:]rrod[:dot:]net)