cPanel web hosting control panel has upcp update script that automatically updates cPanel software. upcp script is scheduled to run once a day as a cron job, and once the update task is completed, cron will automatically send an notification email to administrator or webmaster. Sometimes, however, the following error message will be sent instead.

cPanel Update (upcp) is already running. Please wait for the previous upcp to complete, or kill off all upcp processes and try again. You may wish to use ‘–force’ at /scripts/upcp line 48.

Or,

cPanel Update (upcp) is already running. Please wait for the previous upcp to complete, or kill off all upcp processes and try again. You may wish to use ‘–force’

The error message above may also appear when users try to update cPanel software manually by clicking on “Update Server Software” link under “Software” section in cPanel WebHost Manager (WHM). The update process initially appears working fine, but fails later on. The issue may occur when updating from command shell line using /scripts/upcp too.

It’s pretty obvious what’s happening that cause the problem. It’s due to another process is currently still running upcp script. It shouldn’t be, as most upcp update won’t take more than a few minutes. To solve the problem, simply kill and terminate any unterminated or defunct upcp process.

To kill upcp running process, use the following command to determine the process ID (pid) of the upcp process:

ps aux | grep upcp

You should see a number which represent the pid for upcp in the front (normally second) column. Assuming it’s 88888, then use the following command to send the kill term signal to close upcp task.

kill -9 88888

Replacing the ‘88888’ with the pid for upcp. Sometimes, upcp appears defunct, and cannot be killed. If you’ve never manually ran the upcp script, the problem may be caused by hanged crond daemon that didn’t exit gracefully or simply defunct. In this case, try to kill the crond daemon process.

Determine which pid is the crond with this command:

ps aux | grep crond

Note: In some system, you may have to use CROND (capital) instead of crond.

Then kill off with the same command:

kill -9 <pid>

After killing crond process, you will have to start crond daemon again, else all cron jobs won’t run.