Repeat command automatically in Linux
Is it possible in Linux command line to have a command repeat every n seconds?
Say, I have an import running, and I am doing
ls -l
to check if the file size is increasing. I would like to have a command to have this repeat automatically.
Solution 1:
Watch every 5 seconds ...
watch -n 5 ls -l
If you wish to have visual confirmation of changes, append --differences
prior to the ls
command.
According to the OSX man page, there's also
The --cumulative option makes highlighting "sticky", presenting a running display of all positions that have ever changed. The -t or --no-title option turns off the header showing the interval, command, and current time at the top of the display, as well as the following blank line.
Linux/Unix man page can be found here
Solution 2:
while true; do
sleep 5
ls -l
done
Solution 3:
"watch" does not allow fractions of a second in Busybox, while "sleep" does. If that matters to you, try this:
while true; do ls -l; sleep .5; done
Solution 4:
sleep
already returns 0
. As such, I'm using:
while sleep 3 ; do ls -l ; done
This is a tiny bit shorter than mikhail's solution. A minor drawback is that it sleeps before running the target command for the first time.
Solution 5:
If the command contains some special characters such as pipes and quotes, the command needs to be padded with quotes. For example, to repeat ls -l | grep "txt"
, the watch command should be:
watch -n 5 'ls -l | grep "txt"'