Saltar para o conteúdo
Índice
Sites

Configurar e Gerir Cron Jobs

Tradução automática. O original em inglês está disponível.

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:

  1. Inicie sessão no KPanel e clique em Websites na barra lateral esquerda.
  2. Clique no site pretendido.
  3. 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.

A página Cron de um site no KPanel, listando os trabalhos agendados nesse site

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ãoExpressão
A cada minuto* * * * *
A cada 5 min*/5 * * * *
A cada hora0 * * * *
Diariamente 2AM0 2 * * *
Semanalmente domingo0 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 * * 1 executa à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:

  1. Abra o site e depois o separador WordPress.
  2. Abra a secção WP-Cron.
  3. 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.

Isto foi útil?

É uma IA? Leia esta página em Markdown

Artigos relacionados

Ligar via SFTP: FileZilla, Cyberduck e Linha de ComandosSFTP (Secure File Transfer Protocol) dá-lhe acesso direto aos ficheiros do seu site no servidor. Este guia cobre tudo o que precisa para se ligar com sucesso,…Certificados SSL e HTTPSEste artigo explica o que é o SSL em linguagem simples, como o KapsuleHost gere o SSL automaticamente para os seus sites, e o que fazer caso ocorra algum…Sites Web: Por Onde ComeçarComo funciona o alojamento de sites na KapsuleHost, o que existe em cada separador de um site e qual o guia a ler para a tarefa que tem em mãos.…Monitorização do Tempo de Atividade do SiteTodos os sites na KapsuleHost são verificados automaticamente a cada 60 segundos, e o separador Uptime mostra-lhe o resultado: estado actual, percentagem de…

Ainda precisa de ajuda?

Pergunte à Kora, que conhece a sua conta, ou contacte a nossa equipa.

Contacte-nosSuporte por e-mail