Corrigir problemas com tarefas cron do Nextcloud que não são executadas automaticamente usando systemd.

Para que as tarefas em segundo plano do Nextcloud sejam executadas automaticamente com o systemd, configure um serviço de execução única que seja executado cron.phpcomo o usuário do servidor web e, em seguida, habilite um temporizador para iniciar esse serviço a cada cinco minutos. As principais verificações são: o temporizador está habilitado e possui um horário de próxima execução definido, o serviço aponta para os caminhos corretos do Nextcloud e do PHP e o registro do serviço mostra uma saída bem-sucedida. Um serviço de execução única pode exibir o status "inativo (morto)" entre as execuções; isso pode ser normal após a conclusão.

Esta configuração é para uma instalação convencional do Nextcloud no Ubuntu usando systemd, com os arquivos do Nextcloud disponíveis no host. Se o Nextcloud estiver sendo executado dentro do Docker, Snap ou um appliance como o Nextcloud All-in-One, use o método de agendamento documentado dessa distribuição em vez de apontar uma unidade do host para um caminho exclusivo do contêiner. Os exemplos abaixo usam `<caminho_de_instalação>` /var/www/nextcloude `<usuário_HTTP www-data>`; substitua-os pelo caminho de instalação real e pelo usuário HTTP do seu servidor.

O que o temporizador deve realizar

O Nextcloud cron.phpenfileira tarefas em segundo plano, como manutenção e tarefas do aplicativo. O timer do systemd funciona como um relógio; o serviço é o comando que é executado quando o tempo limite do timer expira. Você precisa de ambos. Criar os arquivos sem habilitar o timer deixa o agendamento inativo, enquanto habilitar um timer que aponta para o caminho errado do PHP ou do Nextcloud pode resultar em falhas repetidas na execução.

O Nextcloud recomenda o uso do cron do sistema para tarefas em segundo plano em produção. Seu manual de administração atual também documenta os timers do systemd como uma alternativa. O exemplo de agendamento inicia cinco minutos após a inicialização do sistema e, em seguida, agenda outra execução cinco minutos após cada ativação de serviço. Isso evita depender do acesso do usuário à interface web.

1. Confirme o caminho de instalação, o usuário e a CLI do PHP.

Antes de editar as unidades, localize o diretório do Nextcloud e verifique qual comando PHP a instalação do servidor web espera. Em uma instalação típica do Ubuntu, o caminho pode ser `/usr/local/bin` /var/www/nextcloud, o usuário web geralmente é `/usr/local www-data/bin` e o comando PHP CLI é `php` /usr/bin/php. Verifique em vez de presumir:

ls -l /var/www/nextcloud/cron.php
command -v php
php -v

Se o diretório do Nextcloud estiver em outro local, substitua-o nos dois comandos da unidade abaixo. Se o servidor web usar uma versão diferente do PHP, use o executável da CLI dessa versão em `/etc/php` ExecStarte ` ExecCondition/etc/php`. Um serviço systemd não herda o PATH ou o ambiente do shell interativo, portanto, caminhos explícitos são mais confiáveis.

Teste a verificação de status com o mesmo usuário que o systemd usará:

sudo -u www-data /usr/bin/php -f /var/www/nextcloud/occ status -e

O comando do Nextcloud occdeve ser executado como o usuário HTTP para preservar a propriedade e as permissões corretas dos arquivos. Se este teste reportar um erro de PHP, modo de manutenção ou um arquivo ausente, corrija isso primeiro; o temporizador não pode compensar uma falha no comando do Nextcloud.

2. Crie o serviço de uso único

Criar /etc/systemd/system/nextcloudcron.service:

sudo nano /etc/systemd/system/nextcloudcron.service

Acesse esta unidade, ajustando o caminho e o usuário caso sua instalação seja diferente:

[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

ExecConditionVerifica se o Nextcloud está funcionando normalmente antes de iniciar a tarefa em segundo plano. Se a condição falhar, o systemd ignora a execução; inspecione o registro para saber o motivo. KillMode=processPermite que programas externos iniciados por uma tarefa em segundo plano continuem após o término do processo cron principal. O exemplo atual do Nextcloud não requer uma [Install]seção neste arquivo de serviço.

O uso do PHP /usr/bin/phpé apropriado somente quando esse for o interpretador de linha de comando correto em seu servidor. Por exemplo, um repositório PHP personalizado pode instalar um binário versionado. Use a mesma versão compatível do PHP que o Nextcloud exige e que sua configuração de servidor web utiliza.

3. Crie o temporizador

Criar /etc/systemd/system/nextcloudcron.timer:

sudo nano /etc/systemd/system/nextcloudcron.timer

Adicionar:

[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

OnBootSecO agendamento define a primeira execução para cinco minutos após o systemd iniciar na inicialização do sistema. OnUnitActiveSecOutra execução é agendada para cinco minutos após a última ativação do serviço. O temporizador não é o mesmo que o serviço: habilite e inicie a .timerunidade para que o agendamento seja executado automaticamente.

4. Recarregue o systemd e ative o temporizador.

Peça ao systemd para ler os novos arquivos de unidade e, em seguida, habilite e inicie o temporizador em um único comando:

sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer

Verifique o cronômetro:

systemctl status nextcloudcron.timer
systemctl list-timers --all | grep nextcloudcron

O temporizador deve estar carregado e ativo, e list-timersdeve mostrar um horário futuro em PRÓXIMO. Se estiver desativado, não carregado ou não tiver ativação em PRÓXIMO, verifique se o nome do arquivo termina em .csv .timer, se a [Install]seção contém .csv WantedBy=timers.targete se você executou o comando daemon-reloadapós salvar os arquivos.

5. Execute um teste e verifique o resultado.

Você pode iniciar o serviço uma única vez sem precisar esperar pelo próximo ciclo do temporizador:

sudo systemctl start nextcloudcron.service
sudo systemctl status nextcloudcron.service
sudo journalctl -u nextcloudcron.service -n 50 --no-pager

Verifique o resultado do serviço e quaisquer erros de PHP ou Nextcloud. Após a conclusão do comando, nextcloudcron.servicepode ser necessário retornar ao inactive (dead)estado anterior, pois trata-se de uma tarefa única. Isso por si só não significa que houve falha. O temporizador deve permanecer ativo e agendar a próxima execução; o registro de eventos deve mostrar se a execução anterior foi concluída com sucesso.

Nas configurações de administração do Nextcloud, abra a área de status de tarefas em segundo plano e confirme se o último horário de execução da tarefa avança após o acionamento do temporizador. O aviso na visão geral deve desaparecer quando o Nextcloud detectar atividade recente em segundo plano. Aguarde pelo menos um intervalo após ativar o temporizador antes de concluir que a tarefa agendada não foi executada.

Diagnosticar os padrões de falha comuns

O que você vêO que verificarPróximo passo
O temporizador está “inativo” ou desativado.Se a unidade de temporizador foi ativada e iniciada.Execute o comando e sudo systemctl enable --now nextcloudcron.timer, em seguida, verifique.systemctl list-timers
O temporizador está ativo, mas o serviço falha.O registro de serviços, o executável do PHP, o caminho do Nextcloud e o usuário do serviço.Execute o teste de status como www-data; corrija o primeiro erro de PHP ou de permissão de arquivo relatado.
O serviço fica inativo entre as execuções.O próximo horário do cronômetro e a última entrada no registro do serviço.Se o serviço for encerrado com sucesso e o temporizador permanecer ativo, isso é normal para uma unidade de uso único.
O serviço é encerrado sem ser executado.cron.phpO ExecConditionresultado e se o Nextcloud está em modo de manutenção.Resolva a falha na condição e verifique o status do Nextcloud antes de iniciar a tarefa manualmente novamente.
A página de administração ainda indica que o cron não foi executado.Se o serviço realmente invoca a instância correta e se o horário da sua última execução muda.Aguarde o intervalo de tempo definido, inspecione os registros e verifique se você está verificando a mesma instalação do Nextcloud.

Para obter mais detalhes, consulte os registros de serviço recentes e o arquivo de log do Nextcloud:

sudo journalctl -u nextcloudcron.service --since "30 minutes ago" --no-pager
sudo -u www-data /usr/bin/php -f /var/www/nextcloud/occ background-job:list

A lista de tarefas mostra o trabalho registrado, mas por si só não comprova que o temporizador está em execução. Utilize em conjunto os horários da última e da próxima ativação do temporizador, o registro de serviços e o indicador de última execução do Nextcloud.

Quando usar um agendador diferente

Os temporizadores do systemd funcionam bem quando o servidor executa o systemd e você deseja um agendamento local gerenciado pelo serviço. Se você já utiliza um daemon cron padrão e pode verificar seu crontab, uma entrada cron do sistema que chama o mesmo cron.phpmétodo www-datatambém é compatível. Não agende ambos os métodos para a mesma instância do Nextcloud; invocações sobrepostas podem desperdiçar recursos e complicar a solução de problemas.

O agendamento AJAX depende de usuários acessando o Nextcloud e é menos confiável para um servidor ocupado ou com múltiplos usuários. O Webcron cron.phputiliza chamadas HTTP e pode ser adequado para instâncias muito pequenas onde o acesso ao sistema não está disponível, mas o Nextcloud observa que a execução via web limita a quantidade de trabalho que pode ser executada por chamada. Se o Nextcloud estiver em um contêiner ou gerenciado por um appliance, utilize o agendador ou a configuração de contêiner compatíveis; um serviço de host /var/www/nextcloudnão funcionará se o caminho não estiver presente no host.

Uma configuração saudável possui um temporizador habilitado com um horário NEXT recorrente, execuções de serviço concluídas sem erros de PHP e um horário de última execução do Nextcloud atualizado. Se todos os três fatores forem verdadeiros, mas uma tarefa específica do aplicativo ainda parecer atrasada, o agendador pode estar trabalhando enquanto essa tarefa aguarda seu próprio agendamento, janela de manutenção ou condições da fila. Diagnostique essa tarefa separadamente antes de alterar o intervalo do temporizador.

Referências oficiais

Deixar um comentário

10 Melhores Ferramentas de Varredura de Ping para Encontrar Dispositivos na Sua Rede

10 Melhores Ferramentas de Varredura de Ping para Encontrar Dispositivos na Sua Rede

Compare 10 ferramentas de varredura de ping para descoberta rápida de LAN, varredura multiplataforma e gerenciamento de endereços IP. Saiba o que uma varredura pode — e não pode — revelar.

6 Melhores Ferramentas de Gerenciamento de Rede para Monitorar o Desempenho

6 Melhores Ferramentas de Gerenciamento de Rede para Monitorar o Desempenho

Compare seis ferramentas de gerenciamento de rede para monitoramento de desempenho, incluindo cobertura SNMP, mapeamento, alertas, modelos de implantação e custo-benefício.

Melhores analisadores de Wi-Fi para Windows, iOS e Android

Melhores analisadores de Wi-Fi para Windows, iOS e Android

Compare as melhores opções de analisadores de Wi-Fi para Windows, iPhone e Android, incluindo ferramentas para congestionamento de canais, cobertura de sinal, mapas de calor e solução de problemas de rede.

Monitor de Ping: 7 ferramentas gratuitas e de código aberto para disponibilidade de rede

Monitor de Ping: 7 ferramentas gratuitas e de código aberto para disponibilidade de rede

Compare sete monitores de ping gratuitos e de código aberto, desde suítes completas de rede até sondas de latência específicas, e escolha a opção mais adequada para disponibilidade, perda de pacotes e histórico.

Taxa de transferência de rede versus largura de banda: o que significam e como afetam o desempenho

Taxa de transferência de rede versus largura de banda: o que significam e como afetam o desempenho

Veja como a taxa de transferência de rede difere da largura de banda, o que causa desempenho lento ou instável e quais ferramentas podem testar um caminho ou monitorar o tráfego.

Melhor software de servidor SFTP para transferências seguras de arquivos

Melhor software de servidor SFTP para transferências seguras de arquivos

Compare softwares de servidor SFTP confiáveis ​​para Windows e Linux, incluindo OpenSSH, Bitvise, SolarWinds e SFTPGo. Encontre a solução ideal para suas necessidades de segurança e transferência de arquivos.

Melhores práticas de monitoramento de rede: o que monitorar e quais ferramentas usar

Melhores práticas de monitoramento de rede: o que monitorar e quais ferramentas usar

Crie um monitoramento de rede prático com cobertura clara de dispositivos, métricas de desempenho úteis, alertas acionáveis ​​e uma comparação entre SolarWinds NPM, PRTG e OpManager.

As 7 melhores ferramentas de gerenciamento de endereços IP para equipes de rede

As 7 melhores ferramentas de gerenciamento de endereços IP para equipes de rede

Compare sete ferramentas de gerenciamento de endereços IP para descoberta de sub-redes, coordenação de DNS e DHCP, inventário de rede e IPAM de código aberto.

10 Melhores Ferramentas de Varredura de Rede para Descobrir Dispositivos e IPs

10 Melhores Ferramentas de Varredura de Rede para Descobrir Dispositivos e IPs

Compare ferramentas de varredura de rede para descoberta rápida de dispositivos, varreduras de IP multiplataforma e IPAM corporativo, com orientações sobre como escolher a opção mais adequada para sua rede.

6 ferramentas de monitoramento de rede Linux para dispositivos, hosts e tráfego.

6 ferramentas de monitoramento de rede Linux para dispositivos, hosts e tráfego.

Compare seis ferramentas de monitoramento de rede Linux para descoberta de dispositivos SNMP, gráficos de interface, métricas de host, verificação de serviços e fluxos de tráfego.