I have a site which requires periodic tasks to be done (sending content update notification / subscription, etc); which are configured on cron run. The cron run is setup to run after every "3 hours" at admin > config > system > cron.
I (user 1) did not visit the site for 10-12 days, while some of the other authenticated users did some activity like commenting / adding content. I have enabled notification emails whenever any user adds / edits any content or comment.
Last night when I logged into the site, I received notifications for the period of 10-12 days (period for which I did not log in to the site). While, as per the expected behavior I should have been receiving the notifications on the cron run after the user activity.
I checked to see the logs, and during this days I can see only the following message under the type "cron"
Attempting to re-run cron while it is already running.
And strangely, I could see
Cron run completed.
just before 5 secs of the message:
Session opened for admin-user.
So, it is clear that I did not receive the notifications because the cron did not run during this period of time.
So, my question is why did the cron not run for these days? What is the exact event which triggers cron to start running? I understand that in Drupal 7
cron.php is called along with a token value to run the cron. But who / what does this call? Or do the Admin users need to log into trigger this action?
UPDATE: The site is on a dedicated server owned by the company. I have access to it as root user. And obviously don't have a cpanel to it ;-) And I have not set any other application to like crontab? Do I need to do so? If so how?