apache2 서버의 모든 관련 로그 파일을 한 번에 보려면 다음을 사용합니다.
tail -f /var/kunden/logs/*log /var/kunden/logs/*log /var/log/apache2/*log |grep -v robots|grep -v favicon
하지만 지금은 이러한 파일이 너무 많기 때문에 그 제한을 늘리고 싶습니다.
SSH 세션을 위해 늘리는 방법은 무엇입니까? 전 세계적으로 어떻게 늘릴 수 있나요?
내 컴퓨터의 열린 파일 제한이 1024인 것을 볼 수 있습니다.
ulimit -n
1024
답변1
두 가지 유형의 제한 사항이 있다는 것을 아는 것이 중요합니다.
- ㅏ하드 제한루트로만 구성할 수 있습니다. 이는 소프트 제한의 가능한 가장 높은 값(제한)입니다.
- ㅏ소프트 리미트일반 사용자가 설정할 수 있습니다. 이것이 실제로 적용되는 한도입니다.
단일 세션 솔루션
셸에서 소프트 제한을 설정합니다.
ulimit -Sn 2048
이 예에서는 실제 제한을 2048로 늘리지만 하드 제한 ulimit -Hn
(check:)이 동일하거나 더 높은 경우에만 명령이 성공합니다. 더 높은 값이 필요한 경우 다음 방법 중 하나를 사용하여 하드 제한을 늘립니다. 이러한 제한은 프로세스별로 설정되고 새로 생성된 프로세스에 의해 상속되므로 동일한 셸에서 이 명령이 실행된 후에 실행되는 모든 항목에는 새로운 제한이 적용됩니다.
단일 세션에서 하드 제한 변경
루트만 하드 제한을 변경할 수 있고, 루트로 전환한 후에는 원래 사용자로 다시 전환해야 하기 때문에 쉽지 않습니다. 해결책은 다음과 같습니다 sudo
.
sudo sh -c "ulimit -Hn 9000 ; exec su \"$USER\""
전체 시스템 솔루션
Debian 및 사용되는 기타 여러 시스템에서는 .conf 파일 에 설명을 포함 pam_limits
할 수 있습니다 . 예시 라인:/etc/security/limits.conf
/etc/security/limits.d
@webadmins hard nofile 16384
@webadmins soft nofile 8192
webadmins
로그인 후 그룹 내 사용자에 대한 하드 제한과 기본 소프트 제한이 설정됩니다.
기타 제한사항
하드 제한 값은 열린 파일 설명자 값에 대한 전역 제한에 의해 제한됩니다. /proc/sys/fs/file-max
이는 최신 Linux 배포판에서 기본적으로 상당히 높습니다. 이 값은 NR_OPEN
커널 컴파일 중에 사용되는 값으로 제한됩니다.
더 나은 해결책은 없을까요?
*log
제공한 모든 파일이 tail -f
실제로 모니터링해야 하는 활성 파일인지 확인할 수 있습니다 . 이러한 파일 중 일부는 로깅을 위해 닫혀 있을 수 있으므로 몇 개의 파일만 열면 됩니다.
답변2
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'
그래서 세 번째 줄을 조정해야 했어요.