Veja como agendar uma tarefa cron no cPanel para rodar um script PHP, chamar uma URL ou o wp-cron do WordPress, com exemplos de horário e comando.
O cron é o agendador de tarefas do Linux. Com ele, a hospedagem roda um comando sozinha em horários definidos: enviar a newsletter toda segunda às 8h, gerar um relatório de madrugada, limpar arquivos temporários a cada hora ou disparar as tarefas agendadas do WordPress. No cPanel, isso se faz pela tela Cron Jobs (no cPanel em português, Trabalhos Cron).
Antes de começar
- Saiba o caminho completo do script. Na hospedagem, os arquivos ficam em
/home/SEU_USUARIO/. Um script empublic_html/scripts/tarefa.phptem o caminho/home/minhaconta/public_html/scripts/tarefa.php(troqueminhacontapelo seu usuário do cPanel, que aparece no canto da tela). - Teste o script antes, abrindo no navegador ou rodando à mão, para ter certeza de que funciona sem o cron.
Como agendar uma tarefa no cPanel
- Abra o Cron Jobs. Fica na seção Advanced (Avançado). Se não achar, digite "cron" na busca do topo do cPanel.
- Defina o e-mail de aviso (opcional). Em Cron Email, informe um e-mail e clique em Update Email. Toda vez que uma tarefa gerar alguma saída, ela chega nesse e-mail. É ótimo para testar e péssimo para deixar ligado numa tarefa que roda de minuto em minuto.
- Escolha a frequência. Em Add New Cron Job, use a lista Common Settings (por exemplo, Once Per Hour) ou preencha os campos Minute, Hour, Day, Month e Weekday.
- Escreva o comando no campo Command, sempre com caminhos completos (veja os exemplos abaixo).
- Clique em Add New Cron Job. A tarefa aparece em Current Cron Jobs, onde você pode editar ou apagar.
Como ler os campos de horário
| Minuto | Hora | Dia | Mês | Dia da semana | Significa |
|---|---|---|---|---|---|
*/15 | * | * | * | * | A cada 15 minutos |
0 | * | * | * | * | Toda hora cheia |
30 | 3 | * | * | * | Todo dia às 3h30 |
0 | 8 | * | * | 1 | Toda segunda-feira às 8h |
0 | 0 | 1 | * | * | Todo dia 1º, à meia-noite |
No dia da semana, 0 é domingo e 6 é sábado. Os horários seguem o relógio do servidor.
Exemplos de comando
Rodar um script PHP
/usr/local/bin/php /home/minhaconta/public_html/scripts/tarefa.php >/dev/null 2>&1
O >/dev/null 2>&1 no final descarta a saída do script e evita um e-mail a cada execução. Tire esse trecho enquanto estiver testando para receber o resultado por e-mail.
Se o script usa caminhos relativos (como include 'config.php'), entre na pasta antes:
cd /home/minhaconta/public_html/scripts && /usr/local/bin/php tarefa.php >/dev/null 2>&1
Chamar uma URL do site
/usr/bin/curl -s https://seudominio.com.br/cron.php >/dev/null 2>&1
Use quando o sistema pede "acesse esta URL periodicamente". Rodar pelo PHP direto, como no exemplo anterior, é mais rápido e não depende do site estar respondendo.
Trocar o wp-cron do WordPress por um cron de verdade
Por padrão, o WordPress só executa as tarefas agendadas quando alguém visita o site. Em site com pouca visita, posts agendados atrasam; em site com muita visita, o wp-cron roda à toa. Para corrigir, acrescente no wp-config.php, antes da linha "Isso é tudo, pode parar de editar":
define('DISABLE_WP_CRON', true);
E crie uma tarefa a cada 15 minutos (*/15 * * * *) com o comando:
cd /home/minhaconta/public_html && /usr/local/bin/php wp-cron.php >/dev/null 2>&1
/usr/local/bin/php usa a mesma versão escolhida em Select PHP Version. Se a tarefa precisar de uma versão específica, use o caminho dela, por exemplo /opt/alt/php83/usr/bin/php para o PHP 8.3.rm) no cron. Um caminho errado ou uma variável vazia pode apagar arquivos da conta inteira, sem pedir confirmação. Teste o comando à mão antes de agendar.Problemas comuns
A tarefa não roda
Tire o >/dev/null 2>&1, configure o Cron Email e espere a próxima execução: o e-mail mostra o erro. Os mais comuns são caminho errado (Could not open input file) e include relativo que não encontra o arquivo (resolve com o cd do exemplo).
Funciona no navegador e falha no cron
No cron não existem $_SERVER['HTTP_HOST'], $_GET nem sessão. Scripts que dependem disso precisam ser ajustados ou chamados por URL com o curl.
Permission denied ao rodar um script .sh
O arquivo precisa de permissão de execução. No File Manager, mude as permissões para 755, ou chame com /bin/bash /home/minhaconta/script.sh.
Recebo dezenas de e-mails do cron
Acrescente >/dev/null 2>&1 ao final do comando ou apague o endereço em Cron Email.