The main difference you are looking for is that cron
is not running constantly. As explained in man cron
:
cron then wakes up every minute, examining all stored crontabs, check‐
ing each command to see if it should be run in the current minute.
When executing commands, any output is mailed to the owner of the
crontab (or to the user named in the MAILTO environment variable in the
crontab, if such exists). The children copies of cron running these
processes have their name coerced to uppercase, as will be seen in the
syslog and ps output.
In other words, cron
will only be started once a minute and it will test whether it should be run. Your sleep approach, on the other hand would require your actual sleep
command, your shell, your terminal, and the while
(or whatever) loop to be running at the same time.
Even if they were launching the same number of processes, cron
would be better. It is written precisely for this by people who tend to be very good at their job. It is bound to do a better job of it than a simple shell loop.