Wenn ich alle relevanten Protokolldateien meines Apache2-Servers gleichzeitig anzeigen möchte, verwende ich
tail -f /var/kunden/logs/*log /var/kunden/logs/*log /var/log/apache2/*log |grep -v robots|grep -v favicon
Aber da dies mittlerweile zu viele Dateien sind, möchte ich diese Grenze erhöhen.
Wie kann ich es für eine SSH-Sitzung erhöhen? Und wie könnte ich es weltweit systemweit erhöhen?
Ich kann sehen, dass das Limit für geöffnete Dateien auf meinem Computer 1024 beträgt:
ulimit -n
1024
-F
stattdessen verwenden,-f
damit die Protokolle beim Drehen wieder geöffnet werden.Antworten:
Es ist wichtig zu wissen, dass es zwei Arten von Grenzen gibt:
Lösung für eine einzelne Sitzung
Stellen Sie in der Shell das Soft-Limit ein:
In diesem Beispiel wird das tatsächliche Limit auf 2048 angehoben, aber der Befehl ist nur erfolgreich, wenn das harte Limit (check :)
ulimit -Hn
gleich oder höher ist. Wenn Sie höhere Werte benötigen, erhöhen Sie das Hard-Limit mit einer der folgenden Methoden. Die Grenzwerte werden pro Prozess festgelegt und von neu erzeugten Prozessen geerbt. Alles, was Sie nach diesem Befehl in derselben Shell ausführen, hat die neuen Grenzwerte.Ändern des Hard Limits in einer einzelnen Sitzung
Dies ist nicht einfach, da nur root ein festes Limit ändern kann und Sie nach dem Wechsel zu root wieder zum ursprünglichen Benutzer wechseln müssen. Hier ist die Lösung mit
sudo
:Systemweite Lösung
In Debian und vielen anderen Systemen können
pam_limits
Sie die systemweiten Grenzwerte in/etc/security/limits.conf
und in Dateien festlegen/etc/security/limits.d
. Die conf-Datei enthält eine Beschreibung. Beispielzeilen:Dadurch werden das harte Limit und das standardmäßige weiche Limit für Benutzer in der Gruppe
webadmins
nach der Anmeldung festgelegt.Andere Grenzen
Der Hard-Limit-Wert wird durch das globale Limit für offene Dateideskriptoren begrenzt,
/proc/sys/fs/file-max
das in modernen Linux-Distributionen standardmäßig ziemlich hoch ist. Dieser Wert wird durch denNR_OPEN
Wert begrenzt , der während der Kernelkompilierung verwendet wird.Gibt es keine bessere Lösung?
Vielleicht könnten Sie überprüfen, ob alle
*log
Dateien, die Sie füttern,tail -f
wirklich aktive Dateien sind, die überwacht werden müssen. Es ist möglich, dass einige von ihnen bereits für die Protokollierung geschlossen sind und Sie nur eine kleinere Anzahl von Dateien öffnen können.quelle
su
su
su -c "ulimit -Hn 6000 ; su $USER"
ulimit -Hn 6000; ulimit -Sn 6000
als root verwenden/etc/limits.*
. Diese Grenzwerte werden angewendet, wenn das PAM-Modulpam_limits.so
aufgerufen wird. Normalerweise ist es zu Beginn einer Sitzung. Zum Beispiel in Ubuntu 14.04 ist es in diesen Tools / Befehlen :cron
,login
(Textkonsolen-Login),lightdm
(die GUI-Login) ,su
. Sie können festlegen, wo inpam_limits
verwendet wird/etc/pam.*
. Siehe zum Beispiel: faqs.org/docs/securing/chap5sec44.htmlIch hatte die PHP-Warnung in meinem Apache error.log:
Also fand ich heraus, dass Apache diesen Wert beim Starten individuell festlegt (auf meinem Ubuntu 14.04). Es ist in konfiguriert
/etc/apache2/envvars
. Es sagt:also musste ich die dritte Zeile anpassen.
quelle