Apache2サーバーのすべての関連ログファイルを一度に表示したい場合は、
tail -f /var/kunden/logs/*log /var/kunden/logs/*log /var/log/Apache2/*log |grep -v robots|grep -v favicon
でも、今はファイルが多すぎるので、その制限を増やしていきたいと思います。
1つのSSHセッションでどのように増やすことができますか?そして、どうすればシステム全体でそれを増やすことができますか?
私のマシンでは、開いているファイルの制限が1024であることがわかります。
ulimit -n
1024
2種類の制限があることを知っておくことが重要です。
シェルでソフト制限を設定します。
ulimit -Sn 2048
この例では、実際の制限を2048に上げますが、コマンドは、ハード制限(チェック:ulimit -Hn
)が同じかそれ以上の場合にのみ成功します。より高い値が必要な場合は、以下のいずれかの方法を使用してハードリミットを引き上げます。制限はプロセスごとに設定され、新しく生成されたプロセスによって継承されるため、同じシェルでこのコマンドの後に実行するものにはすべて新しい制限があります。
単一セッションでハード制限を変更する
Rootだけがハード制限を変更でき、rootに切り替えた後、元のユーザーに切り替える必要があるため、これは簡単ではありません。これがSudo
の解決策です:
Sudo sh -c "ulimit -Hn 9000 ; exec su \"$USER\""
Debianおよびpam_limits
を使用する他の多くのシステムでは、/etc/security/limits.conf
と/etc/security/limits.d
のファイルにシステム全体の制限を設定できます。 confファイルには説明が含まれています。行の例:
@webadmins hard nofile 16384
@webadmins soft nofile 8192
これにより、ログイン後にグループwebadmins
のユーザーにハード制限とデフォルトのソフト制限が設定されます。
ハード制限値は、/proc/sys/fs/file-max
のオープンファイル記述子のグローバル制限値によって制限されます。これは、最新のLinuxディストリビューションではデフォルトでかなり高い値です。この値は、カーネルのコンパイル中に使用されるNR_OPEN
値によって制限されます。
*log
にフィードするすべてのtail -f
ファイルが、監視が必要な実際にアクティブなファイルであるかどうかを確認できます。それらの一部はログ記録のために既に閉じられている可能性があり、少数のファイルを開くことができます。
私のApache error.logにPHP警告がありました:
failed to open stream: Too many open files in ...
ですから、Apacheは起動時にこの値を個別に設定します(私のUbuntu 14.04)。 /etc/Apache2/envvars
。それは言う:
## If you need a higher file descriptor limit, uncomment and adjust the
## following line (default is 8192):
#Apache_ULIMIT_MAX_FILES='ulimit -n 65536'
そのため、3行目を調整する必要がありました。