본문 바로가기
IT Tools

리눅스에서 사용자 또는 프로세스가 사용할 수 있는 자원 및 한계 확인 및 설정하기

by lucidiz 2023. 3. 30.
반응형

ubuntu

ulimit 명령어는 Unix 기반 운영 체제에서 사용자 또는 프로세스가 사용할 수 있는 자원(resource)의 한계(limit)를 설정하는 명령어입니다. 이 명령어는 사용자 또는 프로세스가 사용할 수 있는 자원의 양을 제한하거나 늘릴 수 있습니다.

 

한도에는 soft와 hard 한도가 있습니다. soft 한도는 새로운 프로그램 생성되면 디폴트로 적용되는 한도이고 hard 한도는 소프트 한도에서 최대 늘릴 수 있는 한도로 슈퍼유저에 의해서만 조정이 가능하며 무한히 늘릴 수는 없습니다.

 

리눅스에서 ulimit 명령어는 현재 사용자의 프로세스 및 리소스 제한을 설정하거나 보여주는 데 사용됩니다. ulimit 명령어의 대체 명령어는 존재하지 않지만, 리눅스 시스템에서는 다른 명령어를 사용하여 사용자 제한 정보를 볼 수 있습니다.

예를 들어, "ps" 명령어를 사용하여 현재 실행중인실행 중인 프로세스 정보를 확인할 수 있으며, "-u" 옵션을 추가하여 각 프로세스의 사용자 ID와 함께 표시됩니다. 이를 통해 각 사용자가 현재 실행 중인 프로세스의 수를 확인할 수 있습니다.

또한, "top" 명령어를 사용하여 시스템의 CPU 및 메모리 사용량, 프로세스 목록 및 해당 프로세스의 소유자 등을 볼 수 있습니다. 이를 통해 각 사용자가 시스템 리소스를 어떻게 사용하고 있는지를 확인할 수 있습니다.

하지만, 이러한 명령어는 ulimit 명령어처럼 직접 제한 설정을 변경하는 것은 아니기 때문에, ulimit 명령어와 함께 사용되는 것이 좋습니다.

 

ulimit 명령어 사용법은 다음과 같습니다.

 

ulimit [옵션] 값

 

그리고 옵션은 다음과 같습니다.

 

-a: 모든 제한 사항을 보여준다.
-c: 최대 코어 파일 사이즈
-d: 프로세스 데이터 세그먼트의 최대 크기
-f: shell에 의해 만들어질 수 있는 파일의 최대 크기
-s: 최대 스택 크기
-p: 파이프 크기
-n: 오픈 파일의 최대수
-u: 프로세스 최대수
-v: 최대 가상메모리의 량

 

soft 한도를 알아보는 방법은 아래와 같습니다.

 

ulimit -Sa

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

Hard 한도를 알아 보는 방법은 아래와 같습니다.

ulimit -Ha

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

 

그리고 "/etc/security/limits.conf" 파일에서 수정이 가능합니다.

 

추가로 사용 가능한 "ps"  명령어 대해서 알아보면 다음과 같습니다.

 

"ps" 명령어는 리눅스나 유닉스 시스템에서 현재 실행 중인 프로세스 정보를 보여주는 명령어입니다. 일반적으로 터미널에서 실행되며, 프로세스 ID, 실행 시간, 메모리 사용량 등의 정보를 표시할 수 있습니다.

일반적으로 ps 명령어를 실행하면 현재 사용자의 프로세스 목록이 표시됩니다. 아래는 몇 가지 일반적인 옵션을 사용하여 ps 명령어를 실행하는 방법입니다.

  • ps -e : 시스템 전체에서 실행 중인 모든 프로세스를 표시합니다.
  • ps -f : 프로세스에 대한 상세 정보를 표시합니다. 예를 들어, 프로세스의 소유자, 시작 시간, CPU 사용률 등의 정보가 포함됩니다.
  • ps -u : 특정 사용자가 실행하는 프로세스 목록을 표시합니다.
  • ps -aux : 모든 프로세스를 상세 정보와 함께 표시합니다. 이 옵션은 보통 모든 프로세스를 볼 때 사용됩니다.


ps 명령어에는 이외에도 다양한 옵션이 있으며, man 페이지를 통해 자세한 정보를 확인할 수 있습니다. 예를 들어, "man ps"를 실행하여 ps 명령어의 man 페이지를 열고, 사용 가능한 옵션 목록을 확인할 수 있습니다.

 

추가로 사용 가능한 "top"  명령어 대해서 알아보면 다음과 같습니다.

 

"top" 명령어는 리눅스나 유닉스 시스템에서 실행 중인 프로세스를 모니터링하고, 시스템의 CPU 및 메모리 사용량 등의 정보를 실시간으로 제공하는 명령어입니다.

일반적으로 터미널에서 실행되며, 실행 중인 프로세스의 상태를 지속적으로 업데이트하며, 상단에는 시스템 전반적인 상태를 나타내는 정보가 표시됩니다.

아래는 몇 가지 일반적인 top 명령어의 옵션입니다.

  • top : top 명령어를 실행합니다.
  • top -d [초] : 지정된 시간(초) 간격으로 top 명령어를 실행합니다.
  • top -u [사용자명] : 특정 사용자가 실행 중인 프로세스만 표시합니다.
  • top -p [프로세스 ID] : 지정된 프로세스 ID만 표시합니다.
  • top -n [횟수] : 지정된 횟수만큼 top 명령어를 실행합니다.


top 명령어는 현재 실행 중인 프로세스의 상태를 실시간으로 모니터링하므로, 시스템의 상태나 성능 문제를 진단하는 데 유용합니다. 그러나 top 명령어는 시스템 자원을 많이 소모할 수 있으므로, 필요한 경우에만 사용하는 것이 좋습니다.

반응형