Sites
Configurar e Gerenciar Tarefas Cron
A cron job runs a command on a schedule, in the background, whether or not anyone is visiting your site. This guide covers adding one in KPanel, writing the schedule and the command correctly for…
Configurando e Gerenciando Tarefas Cron
Uma tarefa cron executa um comando em uma programação, em segundo plano, independentemente de alguém estar visitando seu site. Este guia cobre a adição de uma tarefa no KPanel, escrevendo corretamente a programação e o comando para esta plataforma, substituindo o agendador integrado não confiável do WordPress e encontrando a saída quando uma tarefa não faz o que você esperava.
Onde o Cron se Localiza no KPanel
Cron pertence a um site, então você o acessa a partir do site em vez do menu principal:
- Entre no KPanel e clique em Websites na barra lateral esquerda.
- Clique no site desejado.
- No menu do site, abra Advanced e depois Cron.
O endereço direto é /websites/<site-id>/cron. Você verá uma tabela de tarefas existentes ou um estado vazio se o site não tiver nenhuma.

Adicionando uma Tarefa
Clique em Add Cron Job no canto superior direito. O formulário possui três campos.
Schedule
Seis botões predefinidos preenchem a expressão para você:
| Botão | Expressão |
|---|---|
| Every minute | * * * * * |
| Every 5 min | */5 * * * * |
| Every hour | 0 * * * * |
| Daily 2AM | 0 2 * * * |
| Weekly Sunday | 0 2 * * 0 |
| Monthly 1st | 0 2 1 * * |
Ou digite a sua própria no campo Cron expression. Os cinco campos, em 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 da manhã todos os dias.*/15 * * * *executa a cada quinze minutos.0 9 * * 1executa às 9:00 da manhã todas as segundas-feiras.30 1 1 * *executa à 1:30 da manhã no primeiro dia de cada mês.0 */6 * * *executa a cada seis horas, na hora certa.
Label
Um nome que você reconhecerá depois, como WordPress cron ou Nightly stock sync. É o que a tabela de tarefas mostra a você, então torne-o descritivo: job 3 não ajuda ninguém às 2 da manhã.
Command
O comando shell a executar. Clique em Save para criar a tarefa.
Use caminhos completos. Cron executa com um ambiente mínimo e nenhum perfil de shell seu, então um php simples ou um diretório relativo que funciona quando você está conectado via SSH falhará silenciosamente aqui. Escreva o caminho completo, sempre.
Escrevendo o Comando
As tarefas são executadas como o usuário do sistema do seu site, então o seu diretório inicial é o âncora correta e ~ se resolve corretamente. Os arquivos do seu site estão localizados em:
~/htdocs/yourdomain.co.nz
Você pode confirmar o caminho exato na guia Files do site, depois SFTP, que o imprime em Site files.
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 agendá-lo. Cole-o na seção WordPress do site, depois Console se for um comando wp, ou execute-o via SSH. Uma tarefa que nunca funcionaria é muito mais fácil de identificar no prompt do que às 3 da manhã em um arquivo de log.
Substituindo o Agendador Integrado do WordPress
O WordPress vem com seu próprio pseudo-agendador, WP-Cron, que só dispara quando alguém carrega uma página. Em um site tranquilo, posts agendados são publicados atrasados e emails ficam na fila não enviados. Em um site ocupado, cada visitante paga o custo de verificar o agendamento.
Uma tarefa cron real corrige ambos. KPanel faz toda a troca para você:
- Abra o site e depois a guia WordPress.
- Abra a seção WP-Cron.
- Clique em Enable system cron.
Isso adiciona um agendamento que executa WP-Cron a cada cinco minutos e configura DISABLE_WP_CRON para que os carregamentos de página parem de dispará-lo também. Remove system cron na mesma tela reverte ambas as partes.
Se preferir fazê-lo manualmente, são duas etapas:
Desabilite a versão acionada por visitante. Adicione isto ao wp-config.php, acima da linha /* That's all, stop editing! */, usando Files e depois File Manager:
define( 'DISABLE_WP_CRON', true );
Adicione a tarefa real. Em Advanced e depois Cron:
- Schedule:
*/5 * * * * - Label:
WordPress cron - Command:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
Não pule a parte DISABLE_WP_CRON. Com ambas as versões em execução, cada tarefa agendada pode disparar duas vezes: emails duplicados, processamento de pedidos duplicado, cobranças duplicadas em um plugin de assinatura. Use a ação de um clique na seção WP-Cron e isso não pode acontecer com você.
WooCommerce e Filas de Fundo
WooCommerce usa uma fila de fundo para mudanças de status do pedido, renovações de assinatura, emails e atualizações de estoque. Ele depende de WP-Cron, então é exatamente a carga de trabalho que sofre em uma loja tranquila.
Após o agendamento real estar em vigor, a fila é processada a cada cinco minutos. Acompanhe-a em WooCommerce, depois Status e Scheduled Actions no wp-admin.
Uma loja de alto volume pode passar para */2 * * * *. Descer abaixo disso raramente ajuda: você gasta mais tempo iniciando processos do que fazendo trabalho. Veja Setting Up WooCommerce.
Gerenciando Tarefas Existentes
A tabela de tarefas mostra Label, Schedule, Command, Last run e Status, com duas ações em cada linha:
- Disable pausa uma tarefa sem deletá-la e se transforma em Enable para trazê-la de volta. Use isso quando estiver testando se uma tarefa está causando um problema.
- Delete a remove permanentemente. Você será solicitado a confirmar e as execuções agendadas param imediatamente.
Deletar uma tarefa cron não pode ser desfeito. O agendamento é removido do servidor naquele momento. Se você está apenas tentando pará-la temporariamente, use Disable.
Encontrando a Saída
Cada tarefa que Kapsule cria tem sua saída capturada para você. A saída padrão e erros são anexados a um arquivo de log em um diretório cron-logs no diretório inicial do usuário do seu site, um arquivo por tarefa.
Este log é a resposta para quase toda pergunta "minha tarefa foi executada?", porque registra o que o comando imprimiu e qualquer erro que levantou.
Para lê-lo, conecte-se via SSH e procure em ~/cron-logs/. SSH usa autenticação de chave, então adicione sua chave pública primeiro na guia Files do site e depois SSH Keys: veja Adding SSH Keys.
O File Manager e contas SFTP estão confinados ao diretório do seu site, ~/htdocs/yourdomain.co.nz, e cron-logs fica um nível acima disso. É intencional: mantém um contratado com acesso SFTP fora de tudo exceto o website. Use SSH nativo para acessar os logs ou redirecione a saída para seu diretório de site conforme mostrado abaixo.
Se preferir ter a saída em algum lugar que o File Manager 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 erros para o mesmo arquivo que a saída normal. Sem isso, os erros não vão para lugar nenhum.
Qualquer coisa dentro do seu diretório de site pode potencialmente ser solicitada pela web. Coloque um log redirecionado em wp-content em vez de na raiz do site, dê a ele um nome que ninguém adivinhe e delete-o assim que terminar de debugar.
Boas Práticas
- Distribua seus agendamentos. Seis tarefas todas configuradas para
0 2 * * *todas começam de uma vez. Distribua-as:0 2,10 2,20 2. - Não use a cada minuto a menos que realmente precise.
*/5é suficiente para quase tudo, incluindo WordPress e WooCommerce. - Mantenha as tarefas curtas. Uma tarefa que leva mais tempo do que seu intervalo se sobrepõe à próxima execução.
- Redirecione a saída para tudo o que for barulhento, para que uma tarefa tagarela não preencha seu disco.
- Revise a lista ocasionalmente. Tarefas deixadas para trás de um plugin que você removeu continuam sendo executadas.
Solução de Problemas
A tarefa nunca parece ser executada. Verifique o caminho primeiro. Abra o arquivo de log. Em seguida, confirme se o status é Active e não Disabled. Depois execute o mesmo comando via SSH e veja o que ele diz.
"command not found" no log. Um caminho completo faltando. Use /usr/bin/php, /usr/bin/wp, /usr/bin/curl em vez do nome simples.
Permission denied. A tarefa é executada como o usuário do sistema do seu site. Esse usuário precisa possuir ou pelo menos conseguir ler tudo o que o comando toca. Verifique as permissões em Using the File Manager.
As tarefas do WordPress ainda são executadas atrasadas. Confirme que ambas as partes da troca estão em vigor: o agendamento existe em Advanced e depois Cron, e DISABLE_WP_CRON está configurado. A seção WP-Cron na guia WordPress mostra o estado atual de ambos.
A tarefa é executada mas o site fica lento enquanto ela faz isso. Mude-a para uma hora mais tranquila ou divida o trabalho em lotes menores. O uso de recursos em nível de site é visível em Performance: veja Improving Website Speed.
Uma tarefa parou de funcionar após uma atualização de plugin. O caminho do comando pode ter mudado. Verifique o log e depois atualize o comando da tabela de tarefas deletando a tarefa antiga e adicionando uma corrigida.