3

for our magento site, suddenly cron job stopped working.

when we are trying to set up cron job using below command, it give error as :

-bash: */5: No such file or directory

command :

*/5 * * * * php -f /var/www/html/sitename/cron.php

Edit

we have 2 sites on the same server.

we have a custom module to check if the cron is working or not.

in one site we are getting the below message

enter image description here

in another site, this message:

enter image description here

enter image description here

cron.php

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magento.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magento.com for more information.
 *
 * @category    Mage
 * @package     Mage
 * @copyright  Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
 * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */

// Change current directory to the directory of current script
chdir(dirname(__FILE__));


require 'app/Mage.php';

if (!Mage::isInstalled()) {
    echo "Application is not installed yet, please complete install wizard first.";
    exit;
}

// Only for urls
// Don't remove this
$_SERVER['SCRIPT_NAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_NAME']);
$_SERVER['SCRIPT_FILENAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_FILENAME']);

Mage::app('admin')->setUseSessionInUrl(false);

umask(0);

$disabledFuncs = explode(',', ini_get('disable_functions'));
$isShellDisabled = is_array($disabledFuncs) ? in_array('shell_exec', $disabledFuncs) : true;
$isShellDisabled = (stripos(PHP_OS, 'win') === false) ? $isShellDisabled : true;
$isShellDisabled = true;

try {
    if (stripos(PHP_OS, 'win') === false) {
        $options = getopt('m::');
        if (isset($options['m'])) {
            if ($options['m'] == 'always') {
                $cronMode = 'always';
            } elseif ($options['m'] == 'default') {
                $cronMode = 'default';
            } else {
                Mage::throwException('Unrecognized cron mode was defined');
            }
        } else if (!$isShellDisabled) {
            $fileName = basename(__FILE__);
            $baseDir = dirname(__FILE__);
            shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &");
            shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &");
            exit;
        }
    }

    Mage::getConfig()->init()->loadEventObservers('crontab');
    Mage::app()->addEventArea('crontab');
    if ($isShellDisabled) {
        Mage::dispatchEvent('always');
        Mage::dispatchEvent('default');
    } else {
        Mage::dispatchEvent($cronMode);
    }
} catch (Exception $e) {
    Mage::printException($e);
    exit(1);
}

?>

<?php
Mage::log('cron working', null, 'cron.log');
?>

when i add this code at the end of cron.php , and run the file in browser, it showed : Tuesday 17th of May 2016 07:12:03 PM so seems cron is running. but why Heartbeat not found ?

try {
   $myFile = "cronlog.txt";
   $fh = fopen($myFile, 'w');
   $stringData = date('l jS \of F Y h:i:s A');
   fwrite($fh, $stringData);
   fclose($fh);
} catch (Exception $e) {
   Mage::printException($e);
}

Edit 2

in email we are getting these error :

Cron error while executing searchsphinx_check_daemon:

exception 'Mage_Core_Exception' with message 'Too late for the schedule.' inapp/Mage.php:595
Stack trace:
#0app/code/community/Aoe/Scheduler/Model/Observer.php(47): Mage::throwException('Too late for th...')
#1app/code/core/Mage/Core/Model/App.php(1338): Aoe_Scheduler_Model_Observer->dispatch(Object(Varien_Event_Observer))
#2app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Aoe_Scheduler_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
#3app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('default', Array)
#4cron.php(76): Mage::dispatchEvent('default')
#5 {main}

cron log

2016-05-24T12:30:02+00:00 DEBUG (7): Start: captcha_delete_old_attempts
2016-05-24T12:30:02+00:00 DEBUG (7): Stop: captcha_delete_old_attempts
2016-05-24T12:30:02+00:00 DEBUG (7): Start: mstcore_logger_cron
2016-05-24T12:30:02+00:00 DEBUG (7): Stop: mstcore_logger_cron
2016-05-24T12:30:02+00:00 DEBUG (7): Start: newsletter_send_all
2016-05-24T12:30:02+00:00 DEBUG (7): Stop: newsletter_send_all
2016-05-24T12:30:02+00:00 DEBUG (7): Start: searchsphinx_check_daemon
2016-05-24T12:30:02+00:00 DEBUG (7): Stop: searchsphinx_check_daemon
2016-05-24T12:30:02+00:00 DEBUG (7): Start: searchsphinx_reindex_delta_job
2016-05-24T12:30:02+00:00 DEBUG (7): Stop: searchsphinx_reindex_delta_job
2016-05-24T12:30:02+00:00 DEBUG (7): Start: xmlconnect_notification_send_all
2016-05-24T12:30:02+00:00 DEBUG (7): Stop: xmlconnect_notification_send_all
2016-05-24T12:30:03+00:00 DEBUG (7): Start: aoescheduler_heartbeat
2016-05-24T12:30:03+00:00 DEBUG (7): Stop: aoescheduler_heartbeat
2016-05-24T12:30:03+00:00 DEBUG (7): Start: captcha_delete_expired_images
2016-05-24T12:30:03+00:00 DEBUG (7): Job "captcha_delete_expired_images" (id: 133636) is locked. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Stop: captcha_delete_expired_images
2016-05-24T12:30:03+00:00 DEBUG (7): Start: captcha_delete_old_attempts
2016-05-24T12:30:03+00:00 DEBUG (7): Job "captcha_delete_old_attempts" (id: 133638) is locked. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Stop: captcha_delete_old_attempts
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:31" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:32" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:33" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "aoescheduler_heartbeat" at "2016-05-24 12:35" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "aoescheduler_heartbeat" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "aoescheduler_heartbeat" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "captcha_delete_expired_images" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "aoescheduler_heartbeat" at "2016-05-24 12:35" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "aoescheduler_heartbeat" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "aoescheduler_heartbeat" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "captcha_delete_expired_images" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Generated schedule. Newest task is scheduled at "2016-05-24 12:49:00". (Duration: 0.37 sec)
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "newsletter_send_all" at "2016-05-24 12:35" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "newsletter_send_all" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "newsletter_send_all" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:31" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:32" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:33" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:34" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:35" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:36" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:37" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:38" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:39" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:41" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:42" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "newsletter_send_all" at "2016-05-24 12:35" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:43" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "newsletter_send_all" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:44" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "newsletter_send_all" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:46" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:47" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:48" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:49" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_reindex_delta_job" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:31" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:32" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:33" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:34" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:35" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:36" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:37" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:38" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "xmlconnect_notification_send_all" at "2016-05-24 12:35" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:39" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "xmlconnect_notification_send_all" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:41" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:42" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "xmlconnect_notification_send_all" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:43" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:44" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Generated schedule. Newest task is scheduled at "2016-05-24 12:49:00". (Duration: 0.21 sec)
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:46" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:47" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:48" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_check_daemon" at "2016-05-24 12:49" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "searchsphinx_reindex_delta_job" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "xmlconnect_notification_send_all" at "2016-05-24 12:35" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "xmlconnect_notification_send_all" at "2016-05-24 12:40" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Pending schedule for "xmlconnect_notification_send_all" at "2016-05-24 12:45" already exists 1 times. Skipping.
2016-05-24T12:30:03+00:00 DEBUG (7): Generated schedule. Newest task is scheduled at "2016-05-24 12:49:00". (Duration: 0.28 sec)
2016-05-24T12:31:02+00:00 DEBUG (7): Start: mstcore_logger_cron
2016-05-24T12:31:02+00:00 DEBUG (7): Stop: mstcore_logger_cron
2016-05-24T12:31:02+00:00 DEBUG (7): Start: newsletter_send_all
2016-05-24T12:31:02+00:00 DEBUG (7): Stop: newsletter_send_all
2016-05-24T12:31:02+00:00 DEBUG (7): Start: aoescheduler_heartbeat
2016-05-24T12:31:02+00:00 DEBUG (7): Stop: aoescheduler_heartbeat
2016-05-24T12:31:02+00:00 DEBUG (7): Start: searchsphinx_reindex_delta_job
2016-05-24T12:31:02+00:00 DEBUG (7): Stop: searchsphinx_reindex_delta_job
2016-05-24T12:31:02+00:00 DEBUG (7): Start: captcha_delete_expired_images
2016-05-24T12:31:02+00:00 DEBUG (7): Stop: captcha_delete_expired_images
2016-05-24T12:31:02+00:00 DEBUG (7): Start: xmlconnect_notification_send_all
2016-05-24T12:31:02+00:00 DEBUG (7): Stop: xmlconnect_notification_send_all
2016-05-24T12:31:02+00:00 DEBUG (7): Start: captcha_delete_old_attempts
2016-05-24T12:31:02+00:00 DEBUG (7): Stop: captcha_delete_old_attempts
2016-05-24T12:31:02+00:00 DEBUG (7): Start: searchsphinx_check_daemon
2016-05-24T12:31:02+00:00 DEBUG (7): Stop: searchsphinx_check_daemon
2016-05-24T12:32:02+00:00 DEBUG (7): Start: searchsphinx_check_daemon
2016-05-24T12:32:02+00:00 DEBUG (7): Stop: searchsphinx_check_daemon
fresher
  • 917
  • 2
  • 20
  • 55

4 Answers4

1
*/5 * * * * date >> /var/www/html/magento/var/log/cron.log;/bin/sh -f /var/www/html/magento/cron.sh >> /var/www/html/magento/var/log/cron.log;

We also run our crontab as the apache user, as apache is the owner of all our magento files:

sudo crontab -e -u apache
GoatHater
  • 339
  • 1
  • 6
  • `crontab : user apache unknown` we found this error when we tried `sudo crontab -e -u apache` – fresher May 17 '16 at 19:07
  • apache is the user for us, its not the same on all systems, sub apache for whoever is the owner of your magento files. www-data is default on Ubuntu I believe – GoatHater May 17 '16 at 19:09
  • oops, its typo , i have no idea about it , i tried with crontab -e & executed your command. edited the comment. – fresher May 17 '16 at 19:11
  • when i followed [answer](http://stackoverflow.com/questions/5290868/how-would-test-cron-with-magento) of @RThomas , i got `Tuesday 17th of May 2016 07:12:03 PM` in cronlog.txt file. – fresher May 17 '16 at 19:14
  • but here current time is `Wednesday 18th may 12:46:47 AM. is this time difference is related to some configuration in magento. ? means is cron working in our server ? – fresher May 17 '16 at 19:16
  • It would seem the cron is running, as for date I'd make sure your server time/timezone is set up appropriately, the time written in the log is outside of Magento, it is system based. – GoatHater May 17 '16 at 19:22
  • fine than, but why AOE scheduler extension giving "NO heartbeat found " ? – fresher May 17 '16 at 19:23
  • my guess at this point would be permissions. If you know who your owned user is for magento (like I said, ours is apache) chown your magento/ folder -R to apache, and make sure your cron user has permissions to modify files within that directory (so the logs update) – GoatHater May 17 '16 at 19:52
  • please check updated question. i updated cron erros which are coming to email. – fresher May 20 '16 at 06:15
1

If you have two site on same server make sure you call cron.php for each site.

Another reason why your cron is not running correctly it's you have job that take a time and another jobs doesn't start at all.

You can check status of cron jobs in db in table cron_schedule. In this table you can see details about each jobs, start and finish time and errors.

Alexey Stepanov
  • 198
  • 2
  • 7
  • its displaying like this : http://prnt.sc/b67a3c , but have no idea why Heartbeat is not found displaying in backend. – fresher May 20 '16 at 06:04
  • please check updated question. i updated cron erros which are coming to email. – fresher May 20 '16 at 06:14
1

Please check : https://gielberkers.com/solving-too-late-for-the-schedule-with-magento-crons/

It will give you the possible options to check/validate the setting.

Also check the extension code for "date_default_timezone_set" word and see what value is given as default. Is it the same as your magento store.

1

I guess you need two cron job setup in your server. Try to run another site's cron.php by giving its path.

like

*/5 * * * * php -f /var/www/html/sitename/cron.php 
*/5 * * * * php -f /var/www/html/sitename-2/cron.php

Also check for cron log

sudo grep CRON /var/log/syslog

Executing this command you can see whether your cron is running or not.

Anurag Prashant
  • 995
  • 10
  • 31