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"