Si quiero ver todos los archivos de registro relevantes de mi servidor apache2 a la vez, uso
tail -f /var/kunden/logs/*log /var/kunden/logs/*log /var/log/apache2/*log |grep -v robots|grep -v favicon
Pero dado que esos son demasiados archivos por ahora, me gustaría aumentar ese límite.
¿Cómo puedo aumentarlo para una sesión ssh? ¿Y cómo podría aumentarlo globalmente en todo el sistema?
Puedo ver que el límite de archivos abiertos es 1024 en mi máquina:
ulimit -n
1024
-F
lugar de hacerlo-f
para que los registros se vuelvan a abrir al rotarlos.Respuestas:
Es importante saber que hay dos tipos de límites:
Solución para una sola sesión
En el shell establece el límite suave:
Este ejemplo elevará el límite real a 2048, pero el comando tendrá éxito solo si el límite rígido (check:)
ulimit -Hn
es el mismo o mayor. Si necesita valores más altos, aumente el límite rígido utilizando uno de los métodos a continuación. Los límites se establecen por proceso y los procesos recién generados los heredan, por lo que todo lo que ejecute después de este comando en el mismo shell tendrá los nuevos límites.Cambiar el límite duro en una sola sesión
Esto no es fácil porque solo la raíz puede cambiar un límite estricto y después de cambiar a la raíz, debe volver al usuario original. Aquí está la solución con
sudo
:Solución para todo el sistema
En Debian y en muchos otros sistemas que usan
pam_limits
, puede establecer los límites de todo el sistema en/etc/security/limits.conf
y en archivos/etc/security/limits.d
. El archivo conf contiene descripción. Líneas de ejemplo:Esto establecerá el límite rígido y el límite flexible predeterminado para los usuarios del grupo
webadmins
después de iniciar sesión.Otros limites
El valor límite estricto está limitado por el límite global del valor de los descriptores de archivos abiertos,
/proc/sys/fs/file-max
que es bastante alto por defecto en las distribuciones modernas de Linux. Este valor está limitado por elNR_OPEN
valor utilizado durante la compilación del núcleo.¿No hay una mejor solución?
Tal vez podría verificar si todos los
*log
archivos que alimentatail -f
son archivos realmente activos que necesitan ser monitoreados. Es posible que algunos de ellos ya estén cerrados para iniciar sesión y simplemente puede abrir una cantidad menor de archivos.fuente
su
su
su -c "ulimit -Hn 6000 ; su $USER"
ulimit -Hn 6000; ulimit -Sn 6000
/etc/limits.*
. Estos límites se aplican cada vez quepam_limits.so
se llama al módulo PAM . Normalmente es al comienzo de una sesión. Por ejemplo, en Ubuntu 14.04 es en estas herramientas / comandos:cron
,login
(texto de la consola de inicio de sesión),lightdm
(el nombre de usuario GUI),su
. Puede establecer dónde sepam_limits
usa/etc/pam.*
. Ver por ejemplo: faqs.org/docs/securing/chap5sec44.htmlTenía la advertencia de PHP en mi error Apache.log:
Entonces descubrí que apache establece este valor individualmente al iniciar (en mi Ubuntu 14.04). Está configurado en
/etc/apache2/envvars
. Dice:así que tuve que ajustar la tercera línea.
fuente