Magento 1 cron jobs will occasionally freeze. You may notice the cron job has failed to run at its designated time or times, or you may receive notification of a cron job failing to run when you log in as an administrator.
The following procedure outlines how to use SSH to confirm a hanging cron job and how to flush it so it can run as scheduled. However, if your cron consistently hangs, this suggests a larger issue and you should contact the Nexcess Support Team for assistance.
Log in to your account using SSH.
Run the following command to locate hanging cron jobs:
<username>@sip4-000 ~]$ ps ufx | grep cron
- The output should resemble output shown below:
root 12080 0.0 0.0 117328 460 ? Ss Mar25 5:23 crond username 26529 0.0 0.0 103244 848 pts/0 S+ 22:33 0:00 \_ grep cron username 6876 5.0 0.3 646760 88476 ? S 15:42 20:50 /usr/bin/php /chroot/home/username/domainname.com/html/cron.php -mdefault
The first line shows the cron service running on the server.
The second line shows the command that you just ran. It matches itself when looking for the word "cron" in the running services.
Most importantly, the third line shows your Magento cron job. The cron job usually runs quickly, so if it shows up here, it is likely hanging.
You can confirm a hanging cron job by checking the second column from the right. The 15:42 20:50 shows the duration of the cron job; if this duration takes longer than an hour, then it is hanging.
- To stop the cron from running, kill the command by referencing the PID. Returning to the command output, the second column from the left is the PID 6876.
- Run the following command to terminate the command:
[username@sip4-000 ~]$ kill -9 6876
- You may now run the ps ufx | grep cron command to confirm the Magento cron job is no longer running. Your Magento cron job will now continue as scheduled.