10

How can I execute Cron from command line manually.

In Magento 1.x we can run cron like :

www.testsite.com/cron.php 

but in magento 2 how can I do this ?

Please also help me for how can I execute cron from cmd. I already used below command which is not working :

sudo php bin/magento cron:run [--group="customgroupname_cron"]

This is returning exception :

[RuntimeException]   
Too many arguments.  

cron:run [--group="..."] [--bootstrap="..."]

------- Update -------

crontab.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">

    <group id="customgroupname_cron">
        <job name="customgroupname_cron" instance="Namespace\Modulename\Cron\Customcronjob" method="execute">
            <schedule>* * * * *</schedule>
        </job>
    </group>
</config>

In execute method of above file I put log. But after 1 minute also that is not generated.So how can I came to know that my method is executed.

  • It looks, to me a least, like you can still run them like Mage 1 by doing yoursite.com/update/cron.php – tim.baker Sep 7 '16 at 12:28
17

You don't need the brackets when you run the command so you should run:

sudo php bin/magento cron:run --group="customgroupname_cron"
  • Yes this is giving a response that "Ran jobs by schedule". But please check my updated quetion. – Krupali Jun 21 '16 at 13:33
3
cron:run [--group="..."] [--bootstrap="..."]

The [] brackets in a command line prototype merely indicate that the arguments they contain are optional.
In this case, it also states that they are chainable.

2

I merged the other answers from this post a bit - so that only one file is needed, and cron jobs can be run via browser or command line.

Usage via command line:

php cronLaunch.php "Vendor\Module\Class"

Usage via browser:

https://my.domain/hidden/cronLaunch.php?Vendor\Module\Class

Installation

I suggest to copy the source code from below and to store it in src/pub/hidden/cronLaunch.php. It is very important to protect the hidden directory from any unauthorized access!

<?php
require '../../app/bootstrap.php';
if (php_sapi_name() !== 'cli' && isset($_GET['job'])) {
    define('CRONJOBCLASS', $_GET['job']);
} elseif (php_sapi_name() !== 'cli') {
    die('Please add the class of the cron job you want to execute as a job parameter (?job=Vendor\Module\Class)');
} elseif (!isset($argv[1])) {
    die('Please add the class of the cron job you want to execute enclosed IN DOUBLE QUOTES as a parameter.' . PHP_EOL);
} else {
    define('CRONJOBCLASS', $argv[1]);
}

class CronRunner extends \Magento\Framework\App\Http
    implements \Magento\Framework\AppInterface
{

    public function __construct(
        \Magento\Framework\App\State $state,\Magento\Framework\App\Response\Http $response)
    {
        $this->_response = $response;
        $state->setAreaCode('adminhtml');
    }

    function launch()
    {
        $cron = \Magento\Framework\App\ObjectManager::getInstance()
            ->create(CRONJOBCLASS);

        $cron->execute();
        return $this->_response;
    }
}

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$app = $bootstrap->createApplication('CronRunner');
$bootstrap->run($app);

Thanks and credits to all the other people who posted answers here!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.