CentOS에서 /etc/profile을 이용한 오픈 파일 개수 설정 및 /etc/security/limits.conf 비교

운영체제에서 동시에 열 수 있는 파일 개수(ulimit -n)는 기본적으로 제한되어 있습니다. 이 제한을 늘려야 하는 경우, /etc/profile에 설정하면 모든 사용자에게 적용할 수 있습니다.



1. /etc/profile에서 설정하는 이유

시스템 전체 적용

  • /etc/profile모든 사용자가 로그인할 때 실행되는 스크립트이므로, 여기에 ulimit을 설정하면 시스템 전체에 적용할 수 있습니다.

root 계정에만 적용 가능

  • 일반 사용자와 root 계정을 분리하여 관리할 수 있도록, 다음과 같이 if 조건문을 사용합니다.

설정 방법:

sudo vi /etc/profile

아래 내용을 추가합니다.

if [ $USER = "root" ]; then
ulimit -HSn 65535 fi

📌 설명:

  • -H: hard limit (최대값)

  • -S: soft limit (기본값)

  • 65535: 최대 65535개의 파일을 열 수 있도록 설정

이렇게 하면 root 계정에만 적용되며, 일반 사용자는 기본값을 유지할 수 있습니다.



2. 변경사항 적용 방법

설정 후 즉시 적용하려면 터미널에서 다음 명령을 실행합니다.

source /etc/profile

이제 ulimit -n을 실행하면 변경된 값이 적용된 것을 확인할 수 있습니다.

ulimit -n

3. /etc/profile이 아닌 다른 설정 방법

/etc/profile을 수정하는 것 외에도 /etc/security/limits.conf에서 설정할 수도 있습니다.

설정 방법:

vi /etc/security/limits.conf

파일의 맨 아래에 다음 내용을 추가합니다.

* soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535

📌 설명:

  • *: 모든 사용자에게 적용

  • soft nofile 65535: 소프트 리미트 (기본값)

  • hard nofile 65535: 하드 리미트 (최대값)

  • root 계정에도 동일한 설정을 적용하려면 별도로 root 항목을 추가해야 합니다.


설정이 반영되도록 시스템을 재부팅하거나 또는 로그아웃 후 다시 로그인(세션 새로 열기)해야 합니다.

reboot

4. /etc/profile vs /etc/security/limits.conf 비교

설정 파일적용 대상적용 방식적용 범위
/etc/profile로그인한 사용자로그인할 때 실행되는 스크립트로그인 셸에서만 적용 (터미널 환경)
/etc/security/limits.conf시스템 전체PAM (Pluggable Authentication Module)에서 관리SSH, GUI, 서비스, 크론 작업 등 모든 환경에 적용


언제 어떤 설정을 사용해야 할까?

  • 로그인한 사용자(터미널, SSH)만 적용하려면/etc/profile

  • SSH, GUI, 크론 작업, 서비스까지 적용하려면/etc/security/limits.conf



5. 결론

  • /etc/profile을 수정하면 로그인한 사용자에게 적용되지만, 서비스에는 적용되지 않음.

  • /etc/security/limits.conf를 수정하면 시스템 전체(SSH, GUI, 크론 작업, 서비스 포함)에 적용 가능.

  • 서비스(systemd)를 사용하는 경우 /etc/systemd/system.conf 수정도 필요할 수 있음.

💡 최적의 설정:

  • 로그인 사용자 적용/etc/profile

  • 시스템 전체 적용/etc/security/limits.conf

  • 서비스(systemd)까지 적용/etc/systemd/system.conf도 수정 필요

🚀 이제 CentOS에서 오픈 파일 개수 제한 없이 운영하세요!