watch runs commands repeatedly – execute a program periodically
In this article we are going to learn about watch command. Watch runs commands repeatedly. How this watch command is helpful for us..?
When you would like to run one command multiple times by giving intervals, watch is ultimate solution for you. watch runs command repeatedly, displaying its output and errors. 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.
Watch runs commands repeatedly
Check with date command as date updates at every second. If you use option -d along with watch command data update will be highlighted.
[root@ArkITShell ~]#watch date
Every 2.0s: date Sat Dec 24 14:00:05 2016
Sat Dec 24 14:00:05 IST 2016
[root@ArkITShell ~]#watch -d date
Every 2.0s: date Sat Dec 24 14:00:28 2016
Sat Dec 24 14:00:28 IST 2016
Using -n option we can provide interval time in seconds, As shown in below df -h command output updates at every 10 seconds. Continuously watch file system increment / decrements.
[root@ArkITShell ~]# watch -n 10 df -h Every 10.0s: df -h Sat Dec 24 14:05:30 2016 Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 38G 3.5G 35G 10% / devtmpfs 904M 0 904M 0% /dev tmpfs 914M 80K 914M 1% /dev/shm tmpfs 914M 8.9M 905M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/sda1 497M 124M 373M 25% /boot
no-title watch command output. By using -t option along with watch command tittle will be eliminated.
[root@ArkITShell ~]#watch -t date Sat Dec 24 14:09:49 IST 2016
To see the effects of quoting, try these out
[root@ArkITShell ~]#watch echo "'"'$$'"'" [root@ArkITShell ~]#watch echo $$ [root@ArkITShell ~]#watch -n 0.5 echo $$
Real time process updates
[root@ArkITShell ~]# watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
Watch command monitor packet transfer using below combination
[root@ArkITShell ~]# watch -d -n 1 ifconfig Every 1.0s: ifconfig Sat Dec 24 14:18:01 2016 eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.4.10 netmask 255.255.255.0 broadcast 192.168.4.255 inet6 fe80::20c:29ff:fee0:ae5e prefixlen 64 scopeid 0x20<link> ether 00:0c:29:e0:ae:5e txqueuelen 1000 (Ethernet) RX packets 8143 bytes 643514 (628.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2871 bytes 423670 (413.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Monitor Log file continuously for updates
[root@ArkITShell ~]# watch -n 1 tail /var/log/messages
Know Updated data highlighted in color
[root@ArkITShell ~]# watch -d=cumulative date
See multiple commands output with single watch command
[root@ArkITShell ~]# watch "du -h filename.txt && df -h"
Every 2.0s: du -h file1.txt && df -h Sat Dec 24 14:22:41 2016 296K file1.txt Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 38G 3.5G 35G 10% / devtmpfs 904M 0 904M 0% /dev tmpfs 914M 80K 914M 1% /dev/shm tmpfs 914M 17M 897M 2% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/sda1 497M 124M 373M 25% /boot
If data updated then exit from watch command
[root@ArkITShell ~]# watch -e "! date |grep -m 1 \"Dec\"" Every 2.0s: ! date |grep -m 1 "Dec" Sat Dec 24 14:23:43 2016 Sat Dec 24 14:23:43 IST 2016 command exit with a non-zero status, press a key to exit
Continuously replace upcoming data with required string, In this example i would like to replace ‘A’ character with ‘Ravi’
[root@ArkITShell ~]# watch -n 1 sed 's/A/Ravi/g' file1.txt
That’s about watch runs commands repeatedly.
Related Articles
ps command understanding PID generation
top command to analyze system performance
Thanks for your wonderful Support and Encouragement