Run a Linux command every X seconds forever using Watch command
Have you ever wanted to run a command every few seconds automatically? Of course you can do this using a shell script or cron jobs. Alternatively, you can repeat a Linux command at a particular interval without having to manually run it. Here comes watch command in handy.
Watch command can be used to execute a program every X seconds forever and it displays the outputs in the console. By default, the program is run every 2 seconds, Or you can define the time interval of your choice. It will keep running and displaying the respective results until you terminate the program by pressing CTRL+C or kill the process or force your system to reboot.
watch [options] command
Here is the set of five examples that explains where can you use watch command.
Let us display the output of the ‘uptime’ command:
Every 2.0s: uptime Wed Feb 3 12:56:46 2016 12:56:46 up 2:14, 2 users, load average: 0.80, 0.87, 0.63
- Every 2.0s: uptime – The ‘uptime’ command will run every 2 seconds and display the result.
- Wed Feb 3 12:56:46 2016 – The current date and time when we executed the command.
To exit the command, press CTRL+C.
To save the output of the uptime in a file, run:
watch `uptime` > uptime.txt
watch `uptime` > uptime.doc
Let us display the file system disk space usage.
As I mentioned before, watch command executes a program every 2 seconds by default. We can change it to a particular interval, for example 5 seconds, using ‘-n’ parameter.
watch -n 5 df -h
Every 5.0s: df -h Wed Feb 3 12:57:23 2016 Filesystem Size Used Avail Use% Mounted on udev 1.9G 4.0K 1.9G 1% /dev tmpfs 387M 1.3M 385M 1% /run /dev/mapper/lubuntu--vg-root 455G 350G 82G 81% / none 4.0K 0 4.0K 0% /sys/fs/cgroup none 5.0M 0 5.0M 0% /run/lock none 1.9G 44M 1.9G 3% /run/shm none 100M 28K 100M 1% /run/user /dev/sda1 236M 51M 173M 23% /boot
To check this command, just create or delete any file or folder, you might notice that the free space has changed in the output after creating or deleting the files/folders.
To watch contents of a directory change, run:
watch -d ls -l
Here, The -d or –differences flag will highlight the differences between successive updates.
Every 2.0s: ls -l Wed Feb 3 12:36:52 2016 total 96 drwxr-xr-x 2 sk sk 4096 Dec 14 20:12 Desktop drwxr-xr-x 2 sk sk 4096 Oct 3 19:08 Documents drwxr-xr-x 13 sk sk 12288 Feb 3 11:12 Downloads drwxrwxr-x 4 sk sk 4096 Jun 5 2015 Entertainment drwxr-xr-x 2 sk sk 4096 Dec 27 17:44 Music drwxrwxr-x 11 sk sk 4096 Dec 11 15:33 Official drwxrwxr-x 16 sk sk 4096 Nov 6 18:06 Personal drwxr-xr-x 3 sk sk 4096 Feb 2 18:58 Pictures drwxr-xr-x 2 sk sk 12288 Dec 15 11:23 Public drwxrwxr-x 6 sk sk 4096 Jan 8 14:21 Soft_Backup drwxr-xr-x 2 sk sk 4096 Nov 10 2014 Templates drwxr-xr-x 2 sk sk 4096 Feb 25 2015 Videos drwxrwxr-x 9 sk sk 4096 Feb 2 18:58 VirtualBox VMs
Also, you can display the contents of a directory change which is owned by a particular user (Ex.ostechnix).
watch -d 'ls -l | fgrep ostechnix'
To display the memory details, run:
watch -d free -om
Every 2.0s: free -om Wed Feb 3 12:39:57 2016 total used free shared buffers cached Mem: 3860 3765 95 152 202 1250 Swap: 3999 0 3999
To display the output of du command every 10 seconds, you could use:
watch -n 10 du -h
Every 10.0s: du -h Wed Feb 3 12:44:14 2016 17M ./.disruptive innovations sarl/bluegriffon/q87d9o6v.default/extensions 28M ./.disruptive innovations sarl/bluegriffon/q87d9o6v.default 28M ./.disruptive innovations sarl/bluegriffon 28M ./.disruptive innovations sarl 4.0K ./Music 28K ./.gnome/apps 32K ./.gnome 12K ./Public 36K ./.filezilla 80K ./.java/fonts/1.7.0_79 84K ./.java/fonts 8.0K ./.java/.userPrefs/sftp-mss 12K ./.java/.userPrefs 100K ./.java 4.0K ./.dooble/Cache 16K ./.dooble/Dooble 4.0K ./.dooble/Histories 176K ./.dooble 4.0K ./.PlayOnLinux/wine/mono 13M ./.PlayOnLinux/wine/gecko 4.0K ./.PlayOnLinux/wine/linux-amd64 652K ./.PlayOnLinux/wine/linux-x86/1.3.19/share/wine/fonts 872K ./.PlayOnLinux/wine/linux-x86/1.3.19/share/wine
Watch command will be very handy when it comes to monitor disk usage and memory usage. Do not confuse this command with other monitoring tools. This command is intend to execute a command every particular second forever, until you manually stops it.
For more details, I recommend you to refer man pages.
If you like this tutorial, please share it on your social networks and support OSTechNix.
Thanks for reading. Cheers!