Um trabalho cron executa um comando de acordo com um horário, em segundo plano, quer alguém esteja a visitar o seu site quer não. Este guia aborda a adição de um trabalho no KPanel, a escrita correta do horário e do comando para esta plataforma, a substituição do agendador integrado pouco fiável do WordPress e a localização da saída quando um trabalho não faz o que esperava.
Onde Fica o Cron no KPanel
O cron pertence a um site, por isso acede-se a partir do site e não a partir do menu principal:
- Inicie sessão no KPanel e clique em Websites na barra lateral esquerda.
- Clique no site pretendido.
- No menu do próprio site, abra Definições e depois Cron.
O endereço direto é /websites/<site-id>/cron. Verá uma tabela com os trabalhos existentes, ou um estado vazio se o site não tiver nenhum.

Adicionar um Trabalho
Clique em Adicionar Tarefa Cron no canto superior direito. O formulário tem três campos.
Horário
Seis botões predefinidos preenchem a expressão por si:
| Botão | Expressão |
|---|---|
| A cada minuto | * * * * * |
| A cada 5 min | */5 * * * * |
| A cada hora | 0 * * * * |
| Diariamente 2AM | 0 2 * * * |
| Semanalmente domingo | 0 2 * * 0 |
| Mensalmente 1º | 0 2 1 * * |
Ou introduza a sua própria em Expressão cron. Os cinco campos, por ordem, são minuto, hora, dia do mês, mês, dia da semana:
minute hour day-of-month month day-of-week
0 3 * * *executa às 3:00 todos os dias.*/15 * * * *executa a cada quinze minutos.0 9 * * 1executa às 9:00 todas as segundas-feiras.30 1 1 * *executa à 1:30 no dia um de cada mês.0 */6 * * *executa a cada seis horas, em ponto.
Etiqueta
Um nome que reconhecerá mais tarde, como WordPress cron ou Nightly stock sync. É o que a tabela de trabalhos lhe mostra, por isso torne-o descritivo: job 3 não ajuda ninguém às 2 da manhã.
Comando
O comando de shell a executar. Clique em Save para criar o trabalho.
Use caminhos completos. O cron executa com um ambiente mínimo e sem nenhum dos perfis da sua shell, por isso um php simples ou um diretório relativo que funciona quando está ligado por SSH falhará aqui silenciosamente. Escreva sempre o caminho completo.
Escrever o Comando
Os trabalhos executam-se como o próprio utilizador de sistema do seu site, por isso o seu diretório pessoal é a âncora correta e ~ resolve-se corretamente. Os ficheiros do seu site encontram-se em:
~/htdocs/yourdomain.co.nz
Pode confirmar o caminho exato no separador Definições, depois SFTP do site, que o apresenta em Ficheiros do site.
Comandos típicos:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
cd ~/htdocs/yourdomain.co.nz && /usr/bin/php bin/send-queued-emails.php
/usr/bin/curl -fsS https://yourdomain.co.nz/api/nightly-report
Teste o comando antes de o agendar. Cole-o na secção WordPress, depois Console do site se for um comando wp, ou execute-o por SSH. Um trabalho que nunca iria funcionar é muito mais fácil de detetar na linha de comandos do que às 3 da manhã num ficheiro de registo.
Substituir o Agendador Integrado do WordPress
O WordPress vem com o seu próprio pseudo-agendador, o WP-Cron, que só é acionado quando alguém carrega uma página. Num site com pouco tráfego, as publicações agendadas saem atrasadas e os e-mails ficam em fila por enviar. Num site movimentado, cada visitante paga o custo de verificar o horário.
Um verdadeiro trabalho cron resolve ambos os problemas. O KPanel faz toda a substituição por si:
- Abra o site e depois o separador WordPress.
- Abra a secção WP-Cron.
- Clique em Ativar cron do sistema.
Isso adiciona um horário que executa o WP-Cron a cada cinco minutos e define DISABLE_WP_CRON para que os carregamentos de página deixem também de o acionar. Remover cron do sistema no mesmo ecrã reverte ambas as partes.
Se preferir fazê-lo manualmente, são dois passos:
Desativar a versão acionada por visitantes. Adicione isto a wp-config.php, acima da linha /* That's all, stop editing! */, usando Definições, depois Gestor de Ficheiros:
define( 'DISABLE_WP_CRON', true );
Adicionar o trabalho real. Em Definições, depois Cron:
- Horário:
*/5 * * * * - Etiqueta:
WordPress cron - Comando:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
Não salte a parte de DISABLE_WP_CRON. Com ambos a funcionar, qualquer tarefa agendada pode disparar duas vezes: e-mails duplicados, processamento de encomendas duplicado, cobranças duplicadas num plugin de subscrição. Use a ação de um clique na secção WP-Cron e isto nunca lhe acontecerá.
WooCommerce e Filas em Segundo Plano
O WooCommerce usa uma fila em segundo plano para alterações de estado de encomendas, renovações de subscrições, e-mails e atualizações de stock. Depende do WP-Cron, pelo que é exatamente a carga de trabalho que sofre num site com pouco tráfego.
Uma vez implementado o horário real, a fila é processada a cada cinco minutos. Acompanhe isto em WooCommerce, depois Status, depois Scheduled Actions no wp-admin.
Uma loja de volume elevado pode passar para */2 * * * *. Ir abaixo disso raramente ajuda: gasta-se mais tempo a iniciar processos do que a realizar trabalho. Consulte Configurar o WooCommerce.
Gerir Trabalhos Existentes
A tabela de trabalhos mostra Label, Schedule, Command, Última execução e Status, com duas ações em cada linha:
- Disable suspende um trabalho sem o eliminar, e transforma-se em Enable para o reativar. Use isto quando estiver a testar se um trabalho está a causar um problema.
- Delete remove-o permanentemente. Pedir-se-lhe-á confirmação, e as execuções agendadas param de imediato.
Eliminar um trabalho cron não pode ser desfeito. O horário é removido do servidor nesse mesmo momento. Se pretende apenas pará-lo temporariamente, use Disable.
Encontrar a Saída
Todos os trabalhos criados pela KapsuleHost têm a sua saída capturada automaticamente. A saída padrão e os erros são adicionados a um ficheiro de registo num diretório cron-logs no diretório pessoal do utilizador do seu site, um ficheiro por trabalho.
Esse registo é a resposta a quase todas as perguntas do tipo "o meu trabalho executou-se?", porque regista o que o comando imprimiu e qualquer erro que tenha gerado.
Para o ler, ligue-se por SSH e procure em ~/cron-logs/. O SSH usa autenticação por chave, por isso adicione primeiro a sua chave pública a partir do separador Definições, depois Chaves SSH do site: consulte Adicionar Chaves SSH.
As contas do Gestor de Ficheiros e do SFTP estão confinadas ao diretório do seu site, ~/htdocs/yourdomain.co.nz, e cron-logs fica um nível acima. Isso é deliberado: mantém um contratado com acesso SFTP fora de tudo exceto do website. Use o SSH nativo para aceder aos registos, ou redirecione a saída para o diretório do seu site conforme mostrado abaixo.
Se preferir ter a saída algures onde o Gestor de Ficheiros a possa abrir, redirecione-a você mesmo:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now >> ~/htdocs/yourdomain.co.nz/wp-content/cron.log 2>&1
2>&1 envia os erros para o mesmo ficheiro que a saída normal. Sem isso, os erros não vão para lado nenhum.
Tudo o que estiver dentro do diretório do seu site pode, em princípio, ser pedido através da web. Coloque um registo redirecionado em wp-content em vez da raiz do site, dê-lhe um nome que ninguém adivinharia, e elimine-o assim que terminar a depuração.
Boas Práticas
- Escalone os seus horários. Seis trabalhos todos definidos para
0 2 * * *iniciam-se todos ao mesmo tempo. Distribua-os:0 2,10 2,20 2. - Não use a cada minuto a menos que precise mesmo disso.
*/5é suficiente para quase tudo, incluindo WordPress e WooCommerce. - Mantenha os trabalhos curtos. Um trabalho que demore mais tempo do que o seu intervalo irá sobrepor-se à execução seguinte.
- Redirecione a saída de tudo o que seja ruidoso, para que um trabalho verboso não encha o seu disco.
- Reveja a lista ocasionalmente. Trabalhos deixados para trás por um plugin que removeu continuam a executar-se.
Resolução de Problemas
O trabalho nunca parece executar-se. Verifique primeiro o caminho. Abra o ficheiro de registo. Depois confirme se o estado é Active e não Disabled. Depois execute o mesmo comando por SSH e veja o que diz.
"command not found" no registo. Falta um caminho completo. Use /usr/bin/php, /usr/bin/wp, /usr/bin/curl em vez do nome simples.
Permissão negada. O trabalho executa-se como o utilizador de sistema do seu site. Esse utilizador precisa de ser proprietário, ou pelo menos conseguir ler, tudo o que o comando toca. Verifique as permissões em Usar o Gestor de Ficheiros.
As tarefas do WordPress continuam a executar-se atrasadas. Confirme que ambas as partes da substituição estão em vigor: o horário existe em Definições, depois Cron, e DISABLE_WP_CRON está definido. A secção WP-Cron no separador WordPress mostra o estado atual de ambos.
O trabalho executa-se mas o site fica lento enquanto o faz. Mude-o para uma hora mais calma, ou divida o trabalho em lotes mais pequenos. O uso de recursos ao nível do site é visível em Desempenho: consulte Melhorar a Velocidade do Website.
Um trabalho deixou de funcionar depois de uma atualização de plugin. O caminho do comando pode ter mudado. Verifique o registo e depois atualize o comando na tabela de trabalhos eliminando o trabalho antigo e adicionando um corrigido.