Cronjob "No queda espacio en el dispositivo" al registrar el error pero hay espacio

Cronjob "No queda espacio en el dispositivo" al registrar el error pero hay espacio

Estoy intentando solucionar algunos problemas de cronjob que tengo, así que quería comenzar a registrarlos.

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

Cuando veo mi archivo de registro, obtengo algunos errores de No queda espacio en el dispositivo, pero el cronjob se ejecuta correctamente.

Revisé mi df y df -i para verificar mi almacenamiento e inodos y tengo mucho almacenamiento.

¿Qué está causando este error particular de No queda espacio en el dispositivo cuando se registra?

--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).

ingrese la descripción de la imagen aquí

Respuesta1

sospecho que tuguardó un nuevo archivo cada vez que se ejecutó ese scripty alcanzar algún límite de recursosotroque el tamaño total del contenido del archivo.

Intente df -ibuscar el uso de inodos. Muchos sistemas de archivos imponen un límite no sólo al volumen total de archivoscontenido, pero además en las entradas de metadatos de archivos necesarias para almacenar sus nombres, propietario, hora, permiso, ... Si ve un millón de inodos, eso estaría muy por encima del uso común del sistema operativo.

Dicho comando puede bloquearse por un tiempo no especificado, pero puede intentar verificar directamente los directorios probables para determinar si tiene962181archivos vacíos en un directorio. Algunos sistemas de archivos imponen límites adicionales al número de entradas individuales por debajo de un único nivel de directorio. Es poco probable que esto sea algo que desee; cualquier aplicación en la que se deseen muchos archivos también funcionaría mejor con un acceso rápido (indexado en varios niveles).


¿Cómo lidiar con una cantidad excesiva de archivos encontrados?

Si desea conservar la salida potencial, pero no necesita almacenar las horas en las que se ejecutó previamente su cronjob, es posible que desee eliminar selectivamente los archivos vacíos y continuar investigando solo lo que dicen los que no están vacíos, por ejemplo:

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

¿Cómo evitar que el problema vuelva a ocurrir en el futuro?

Si en realidad no necesita conservar el resultado de todas las descargas anteriores, considere especificar un nombre de salida (posiblemente incluso /dev/null para no almacenar ni siquiera la última descarga) para anularlo en cada llamada, a diferencia del valor predeterminado donderizosimplemente agrega un número al nombre del archivo de salida cuando ya existe en el directorio.

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

información relacionada