Linux 에서 ulimit 설정 적용 여부 확인 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 에서 ulimit 설정이 올바르게 적용되었는지 확인하는 방법을 배우게 됩니다. ulimit -a를 사용하여 현재 쉘의 제한을 표시하는 것부터 시작하여 리소스 제한을 확인하는 다양한 방법을 탐색할 것입니다.

그 다음, 사용자 및 그룹에 대한 제한이 어떻게 설정되는지 이해하기 위해 시스템 전체 구성 파일인 /etc/security/limits.conf를 검토할 것입니다. 마지막으로, 실행 중인 프로세스의 /proc 항목을 검사하여 해당 프로세스에 적용된 실제 제한을 확인하는 방법을 배우게 됩니다. 이러한 실습 접근 방식은 리소스 제한이 어떻게 작동하고 Linux 환경에서 관련 문제를 해결하는 방법에 대한 포괄적인 이해를 제공할 것입니다.

ulimit -a 로 제한 표시

이 단계에서는 ulimit 명령을 사용하여 Linux 의 리소스 제한에 대해 배우게 됩니다. 리소스 제한은 프로세스가 사용할 수 있는 시스템 리소스의 최대량을 제어합니다. 이는 시스템 안정성을 유지하고 단일 프로세스가 사용 가능한 모든 리소스를 소비하는 것을 방지하는 데 중요합니다.

ulimit 명령을 사용하면 현재 쉘 세션 및 해당 세션에서 시작된 모든 프로세스에 대한 이러한 제한을 보고 설정할 수 있습니다.

현재의 모든 리소스 제한을 표시하려면 터미널을 열고 다음 명령을 입력하십시오.

ulimit -a

Enter 키를 누르십시오.

다음과 유사한 출력을 보게 됩니다.

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) <placeholder>
max locked memory       (kbytes, -l) <placeholder>
max memory size         (kbytes, -m) unlimited
open files                      (-n) <placeholder>
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) <placeholder>
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) <placeholder>
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

출력은 최대 열린 파일 수 (-n), 최대 사용자 프로세스 수 (-u), 최대 스택 크기 (-s) 등 다양한 리소스 제한을 보여줍니다. unlimited 값은 해당 리소스에 대해 적용되는 제한이 없음을 의미합니다.

이러한 제한을 이해하는 것은 성능 문제 또는 예상치 못한 프로그램 동작을 진단하는 데 중요합니다. 예를 들어, 프로그램이 충분한 파일을 열 수 없어 실패하는 경우 ulimit -aopen files 제한을 확인하는 것이 좋은 첫 번째 단계입니다.

옵션을 지정하여 개별 제한을 볼 수도 있습니다. 예를 들어, 열린 파일 수에 대한 제한을 보려면 다음을 수행합니다.

ulimit -n

그러면 열린 파일에 대한 현재 제한을 나타내는 단일 숫자가 출력됩니다.

터미널에서 ulimit -a 명령을 실험해 보십시오. 표시되는 다양한 유형의 제한에 익숙해지십시오.

다음 단계로 진행하려면 Continue를 클릭하십시오.

cat /etc/security/limits.conf로 제한 설정 확인

이전 단계에서는 ulimit -a를 사용하여 쉘 세션에 대한 현재 리소스 제한을 확인했습니다. 이러한 제한은 종종 /etc/security/limits.conf라는 파일에서 시스템 전체적으로 구성됩니다.

이 파일은 PAM (Pluggable Authentication Modules) 프레임워크의 일부이며, 관리자가 로그인 시 사용자 및 그룹에 대한 리소스 제한을 설정할 수 있도록 합니다.

cat 명령을 사용하여 이 구성 파일의 내용을 확인해 보겠습니다. cat은 파일의 내용을 표시하는 데 사용되는 간단한 명령입니다.

터미널을 열고 다음 명령을 입력하십시오.

cat /etc/security/limits.conf

Enter 키를 누르십시오.

limits.conf 파일의 내용이 표시됩니다. 출력은 다음과 유사하게 보일 것입니다 (주석 및 특정 항목은 다를 수 있음).

## /etc/security/limits.conf
#
#This file sets the limits for the resources available to the login session of
#users and groups. It is used together with the pam_limits module.
#
## (it is recommended to use #include files from /etc/security/limits.d/)
#

#*               soft    core            0
#root            hard    core            unlimited
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           unlimited
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

이 파일은 다음과 같은 간단한 형식을 사용합니다.

<domain> <type> <item> <value>

  • <domain>: 제한이 적용되는 사용자 또는 그룹을 지정합니다. 사용자 이름, 그룹 이름 (앞에 @가 붙음) 또는 모든 사용자에 대한 *일 수 있습니다.
  • <type>: soft 또는 hard일 수 있습니다.
    • soft 제한은 사용자가 늘릴 수 있는 현재 제한입니다 (hard 제한까지).
    • hard 제한은 비 루트 사용자가 초과할 수 없는 최대 제한입니다.
  • <item>: 제한되는 리소스 항목 (예: 프로세스 수에 대한 nproc, 열린 파일 수에 대한 nofile).
  • <value>: 제한 값.

#로 시작하는 줄은 주석이며 무시됩니다.

## (it is recommended to use #include files from /etc/security/limits.d/) 줄을 확인하십시오. 이는 시스템별 또는 애플리케이션별 제한이 종종 /etc/security/limits.d/ 디렉토리 내의 별도 파일에 배치됨을 나타냅니다. 이렇게 하면 기본 limits.conf 파일을 깨끗하고 정리된 상태로 유지할 수 있습니다.

이 랩에서는 이 파일을 수정하지 않지만, 구조와 목적을 이해하는 것은 시스템 관리에 중요합니다. ulimit -a로 확인한 제한은 종종 이 파일 및 limits.d의 파일에 있는 설정에서 파생됩니다.

다음 단계로 이동하려면 Continue를 클릭하십시오.

cat /proc/self/limits로 프로세스 제한 확인

이전 단계에서는 현재 세션 제한을 보기 위한 ulimit와 시스템 전체 구성을 위한 /etc/security/limits.conf에 대해 배웠습니다. 이제 실행 중인 프로세스가 자체 제한을 보고하는 방법을 살펴보겠습니다.

Linux 는 실행 중인 프로세스 및 시스템 커널에 대한 정보를 포함하는 /proc라는 가상 파일 시스템을 제공합니다. 각 실행 중인 프로세스에는 PID (Process ID) 를 따라 이름이 지정된 /proc 아래의 디렉토리가 있습니다.

특수 디렉토리 /proc/self는 이를 액세스하는 프로세스의 /proc 디렉토리를 가리키는 심볼릭 링크입니다. 따라서 터미널에서 /proc/self에 액세스하면 현재 쉘 프로세스에 대한 정보를 보게 됩니다.

/proc/self 디렉토리 내에는 해당 특정 프로세스에 대한 리소스 제한을 포함하는 limits라는 파일이 있습니다.

cat을 사용하여 현재 쉘 프로세스에 대한 제한을 확인해 보겠습니다.

cat /proc/self/limits

Enter 키를 누르십시오.

다음과 유사한 출력을 보게 됩니다.

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             unlimited            unlimited            processes
Max open files            1048576              1048576              files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       <placeholder>        <placeholder>        signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

이 출력은 ulimit -a에서 본 것과 유사하게 각 리소스에 대한 Soft LimitHard Limit를 보여줍니다. 여기의 값은 cat 명령 (쉘) 을 실행한 프로세스에 적용된 실제 제한을 반영합니다.

cat /proc/self/limits의 출력과 첫 번째 단계의 ulimit -a의 출력을 비교하십시오. ulimit -a가 현재 쉘 프로세스의 제한을 보고하므로 값이 일치하는 것을 확인할 수 있습니다.

/proc 파일 시스템은 Linux 시스템 및 해당 프로세스의 상태를 검사하는 강력한 도구입니다. 각 프로세스의 디렉토리 내의 limits 파일은 해당 특정 프로세스에 유효한 리소스 제한을 직접 확인할 수 있는 방법을 제공합니다.

이제 Linux 에서 리소스 제한과 상호 작용하는 세 가지 다른 방법을 배웠습니다. ulimit -a로 현재 세션 제한 보기, /etc/security/limits.conf에서 시스템 전체 구성 검사, /proc/<PID>/limits (또는 /proc/self/limits) 를 통해 특정 프로세스에 대한 제한 확인.

이 랩을 완료하려면 Continue를 클릭하십시오.

요약

이 랩에서는 Linux 에서 ulimit 설정이 적용되었는지 확인하는 방법을 배웠습니다. 먼저 ulimit -a 명령을 사용하여 쉘 세션에 대한 현재 리소스 제한을 표시하고, 열린 파일, 사용자 프로세스 및 스택 크기와 같은 다양한 제한을 이해했습니다. 이 명령은 현재 쉘에서 시작된 프로세스에 의해 상속된 제한에 대한 간략한 개요를 제공합니다.

다음으로, cat을 사용하여 시스템 전체 구성 파일 /etc/security/limits.conf를 탐색했습니다. 이 파일은 로그인 시 적용되는 사용자 및 그룹에 대한 기본 리소스 제한을 정의합니다. 마지막으로, /proc/self/limits를 검사하여 실행 중인 프로세스에 대한 실제 리소스 제한을 확인했습니다. 이는 현재 프로세스에 대한 유효한 제한을 보여주며, 특정 프로세스 인스턴스에 적용된 제한을 확인하는 방법을 보여줍니다.