Cronjob “Não resta espaço no dispositivo” ao registrar erro, mas há espaço

Cronjob “Não resta espaço no dispositivo” ao registrar erro, mas há espaço

Estou tentando solucionar alguns problemas de cronjob que estou tendo, então queria começar a registrá-los.

* * * * * wget https://www.example.com/dosomething.php >> /var/log/myjob.log 2>&1

Quando visualizo meu arquivo de log, recebo alguns erros de No space left of device, mas o cronjob é executado com êxito.

Verifiquei meu df e df -i para verificar meu armazenamento e inodes e tenho bastante armazenamento.

O que está causando esse erro específico de Nenhum espaço deixado no dispositivo quando ele é registrado?

--2022-12-09 19:32:08--  https://www.example.com/dosomething.php
Resolving www.example.com (www.example.com)... x.x.x.x
Connecting to www.example.com (www.example.com)|x.x.x.x|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [text/html]
dosomething.php.962181: No space left on device

Cannot write to 'dosomething.php.962181' (Success).

insira a descrição da imagem aqui

Responder1

Eu suspeito de vocêsalvou um novo arquivo toda vez que o script foi executadoe atingiu algum limite de recursosoutrodo que o tamanho total do conteúdo do arquivo.

Tente df -iprocurar o uso do inode. Muitos sistemas de arquivos impõem um limite não apenas no volume total de arquivosconteúdo, mas também nas entradas de metadados de arquivo necessárias para armazenar seus nomes, proprietário, hora, permissão, .. Se você vir um milhão de inodes, isso estaria bem acima do uso comum do sistema operacional.

Esse comando pode travar por um tempo não especificado, mas você pode tentar verificar diretamente os diretórios prováveis ​​para determinar se possui962181arquivos vazios em um diretório. Alguns sistemas de arquivos impõem limites adicionais ao número de entradas individuais abaixo de um único nível de diretório. É improvável que isso seja algo que você deseja; qualquer aplicativo em que muitos arquivos sejam desejáveis ​​também seria melhor atendido com acesso rápido (indexado em vários níveis).


Como lidar com o número excessivo de arquivos encontrados?

Se você deseja manter a saída potencial, mas não precisa armazenar os horários em que seu cronjob foi executado anteriormente, você pode excluir seletivamente os arquivos vazios e continuar investigando apenas o que dizem os não vazios, por exemplo:

# find /root -xdev -maxdepth 1 -type f -size 0 -name "dosomething.php.*" -delete

Como evitar que o problema se repita no futuro?

Se você realmente não precisou preservar o resultado de todos os downloads anteriores, considere especificar um nome de saída (possivelmente até /dev/null para não armazenar nem mesmo o download mais recente) a ser substituído em cada chamada, em oposição ao padrão ondeondulaçãoapenas anexa um número ao nome do arquivo de saída quando ele já existe no diretório.

* * * * * wget -O /root/latest-something.html https://example.com/something.php >> /var/log/myjob.log 2>&1

informação relacionada