How to monitor any command output in real-time with watch command on Linux
On Linux, watch
command helps you refresh the output of a command every second, which functions just like a real-time monitoring. Let’s look at some practical examples.
Monitor log output
One of the most common scenarios in Linux is looking at the log output of an application using the tail
command
$ tail -n 10 output.log
This command will output the last 10 lines of the output.log file to the terminal console.
Let’s say you want to check if there is anything new appended to the log file, you will have to re-run the command every time. To do this automatically, just add a watch
command at the beginning of the previous command like this
$ watch tail -n 10 output.log
By default, watch
command refresh every 2 seconds. If you want to change the interval, add a -n
argument like this
$ watch -n 1 tail -n 10 output.log
This will make the command refresh every 1 second, showing the last 10 lines of the log file.
Monitor disk I/O status
You can monitor disk I/O with iostat
command.
First, you have to install iostat
, which is included in sysstat
package
On CentOS
$ yum install sysstat
On Ubuntu
$ apt install sysstat
Then run the command
$ iostat
Monitor I/O status in real-time
$ watch iostat
Monitor network connection
Let’s say you are running a web server on port 80 and want to check how many clients are connecting to the server.
First, we list all connection to the server using netstat
command
$ netstat -naltp
Then we filter those connections to port 80 that are established
$ netstat -naltp | grep :80 | grep ESTABLISHED
If you want to count the connections, add a -c
argument
$ netstat -naltp | grep :80 | grep ESTABLISHED -c
To refresh the command in real-time, add watch
at the beginning
$ watch "netstat -naltp | grep :80 | grep ESTABLISHED -c"
Notice that in the command above, the command to be watched is wrapped inside quotes. This is because without the quotes, the grep
command is confused which output stream to consume: watch
command or netstat
command. To clear out the confusion, we have to put the command we want to “watch” in quotes
Monitor disk usage and disk free space
To monitor disk free space
$ watch df -h
To monitor disk usage
$ watch du -c -h -d 1
Monitor how many instances of a process is running
To monitor how many instances of a process is running, use a ps
command with watch
$ watch "ps aux | grep nginx - c"