LIMITS(1)

명칭
limits - 리소스의 제한치의 설정 및 표시

서식
limits [-C class] [-SHB] [-ea] [-cdflmnstuv [val]] limits [-C class] [-SHB] [-cdflmnstuv [val]] [-E] [name=value ...] [command] limits [-U user] [-SHB] [-ea] [-cdflmnstuv [val]] limits [-U user] [-SHB] [-cdflmnstuv [val]] [-E] [name=value ...] [command]

해설
limits 유틸리티는 커널의 리소스 제한의 표시 및 설정을 행합니다. 또, env(1) (와)과 같이 환경 변수를 설정해, 프로그램을 선택한 리소스로 동작시키는 와 (와)과도 할 수 있습니다. limits 명령은 이하의 3 방법의 사용법이 생깁니다:

    limits [limitflags] [name=value] command 이 사용법에서는 limitflags 에 따라 제한을 세트 해, 옵션으로 name=value 의 페어로 주어진 환경 변수를 세트 해, 지정된 명령을 실행합니다.

    limits [limitflags] 이 사용법에서는 리소스의 설정의 값은 실제로는 설정하지 않고 , 설정치를 limitflags 에 따라 결정해, 표준 출력에 출력합니다. 디폴트에서는, 호출 프로세스에 대해 유효한 현재의 커널의 리소스의 설정치를 출력합니다. -C class (이)나 -U user 플래그를 사용하면(자), 로그인 능력 데이타베이스 login.conf(5) 그리고 설정되어 있는 로그인 클래스의 리소스 제한 엔트리에 의해 변경되었다 현재의 리소스 설정을 표시합니다.

    limits -e [limitflags] 이 사용법에서는 limitflags 에 따라 리소스의 설정치를 결정합니다만, 실제로는 설정은 행하지 않습니다. 전의 사용법과 같이, 이러한 설정치를 표준 출력 합니다만, 쉘을 콜 하는데 형편이 좋게 eval 의 형식에서 출력합니다. 콜 되는 쉘은, parent process의 /proc 파일 시스템중의 엔트리를 조사해 결정됩니다. 만약, 쉘이 판명되면(자) (즉 sh, csh, bash, tcsh, ksh, pdksh, rc 의 언젠가), limits (은)는 'limit'혹은 'ulimit'명령을 그 쉘을 해석할 수 있는 포맷으로 출력합니다. 쉘명을 결정될 수 없었던 경우는, sh(1) 에 의해 사용되는 'ulimit'형식에서 출력합니다.

    이것은 스크립트로 제한을 설정하거나 demon나 다른 배경 태스크를 리소스를 제한해 기동하거나 하는 경우에 매우 편리한 기능입니다. 또, 로그인 클래스 데이타베이스를 설정해 중앙 데이타베이스를 메인트넌스하는 것으로써, 최대 사용 리소스를 글로벌로 설정할 수가 있다고 하는 이점이 있습니다.

    limits (은)는 통상 셸 스크립트중에서는 다음과 같이 백 쿼테이션에 둘러싸 평가할게 게 해 사용됩니다.

        eval `limits -e -C daemon`

    이것으로 limits 의 출력이 평가되어 현재의 쉘로 설정됩니다.

상기 중(안)에서 지정되었다 limitflags 의 값에는 이하의 옵션 중 1 개(살) 이상의 것이 포함됩니다:

-C class
    현재의 리소스의 값을 기초로, 로그인 클래스 "class" 로 적용된다 리소스 엔트리에 의해 변경한 것을 사용합니다.

-U user
    현재의 리소스의 값을 기초로,"user" 가 속하는 로그인 클래스에 적용된다 리소스 엔트리에 의해 변경한 것을 사용합니다. user 가 어느 클래스에도 속하지 않은 경우,"default" 클래스가 존재 의 리소스 능력이 사용되어 만약 그 유저가 슈퍼 유저 어카운트여라 ,"root" 클래스가 사용됩니다.

-S  리소스의 "soft" (혹은 현재의) 제한을 표시 혹은 설정합니다. 이 스윗치에 이어 지정되는 제한의 설정은, -H (이)나 -B 플래그로 오바라이드 하지 않는 한, soft 제한에 대한 설정이 됩니다.

-H  리소스의 "hard" (혹은 최대의) 제한을 표시 혹은 설정합니다. 이 스윗치에 이어 지정되는 제한의 설정은, -S (이)나 -B 플래그로 오바라이드 하지 않는 한, hard 제한에 대한 설정이 됩니다.

-B  리소스의 "soft" (현재의 것) 및 "hard" (최대의) 제한을 표시 혹은 설 정합니다. 이 스윗치에 이어 지정되는 제한의 설정은, -S (이)나 -H 플래그로 오바라이드 하지 않는 한, soft 제한 및 hard 리밋트의 양자에 대한 설정이 됩니다.

-e  출력을 "eval mode" (평가 모드)의 서식으로 합니다. 이것은 표시 모드에서만 유효하고, 명령을 실행할 경우에는 사용할 수 없습니다. 출력에 사용되는 정확한 문장구조법은 limits 하지만 기동된 쉘의 타입에 의존합니다.

-b [limit]
    sbsize 자원 제한을 선택 또는 설정합니다.

-c [limit]
    coredumsize 의 리소스의 제한을 선택 혹은 설정 ( 'limit'가 지정되었을 경우)합니다. 값에 0 을 지정하면(자) 코어덤프 하지 않게 됩니다.

-d [limit]
    datasize 의 리소스의 제한을 선택 혹은 설정 ( 'limit'가 지정되었을 경우)합니다.

-f [limit]
    filesize 의 리소스의 제한을 선택 혹은 설정합니다.

-l [limit]
    memorylocked 의 리소스의 제한을 선택 혹은 설정합니다.

-m [limit]
    memoryuse 의 사이즈의 제한을 선택 혹은 설정합니다.

-n [limit]
    openfiles 의 리소스의 제한을 선택 혹은 설정합니다. 프로세스마다의 최대 오픈 파일수의 시스템 와이드의 제한은, 'sysctl kern.maxfilesperproc'명령로 표시할 수 있습니다. 시스템 전체로 동시에 오픈할 수 있는 파일의 총수는, 'sysctl kern.maxfiles'명령로 표시할 수 있는 값에 제한됩니다.

-s [limit]
    stacksize 의 리소스의 제한을 선택 혹은 설정합니다.

-t [limit]
    cputime 의 리소스의 제한을 선택 혹은 설정합니다.

-u [limit]
    maxproc 의 리소스의 제한을 선택 혹은 설정합니다. UID 마다의 최대 프로세스수의 시스템 와이드의 제한은, 'sysctl kern.maxprocperuid'명령로 표시할 수 있습니다. 시스템 전체로 동시에 주행할 수 있는 프로세스의 총수는, 'sysctl kern.maxproc'명령로 표시할 수 있는 값에 제한됩니다.

-v [limit]
    virtualmem 의 리소스의 제한을 선택 혹은 설정합니다. 해당 유저 프로세스가 사용 가능한 VM 공간 전체를 제한해, 이것에는, 텍스트, 데이터, BSS, 스택, brk(2), sbrk(2) mmap(2) 되는 공간이 포함됩니다.

상기의 플래그세트에 있어서의 유효한 limit 의 값은, 무한치 (혹은 커널에 대해 정의되고 있는 최대치)를 설정하는 경우는 캐릭터 라인 infinity inf unlimited unlimit 의 어느쪽이든을 지정해, 그 이외의 경우는 접미자포함의 숫자를 지정합니다. 사이즈에 관한 값은 디폴트에서는 바이트에서의 값이 됩니다. 또 이하의 접미자의 1 개를 붙이는 것에 의해 그 단위가 됩니다.

b   512 바이트 블록.
k   킬로바이트 (1024 바이트).
m   메가바이트 (1024*1024 바이트).
g   기가바이트.
t   테라바이트.

cputime 리소스에 대해서는 디폴트에서는 초에 의한 값이 됩니다. 또 이하의 접미자를 부가하는 것으로써, 각각의 단위로 지정 가능합니다. 유효한 복수의 단위 지정을 늘어놓으면(자), 그 화를 지정한 것이 됩니다:
s   초.
m   분.
h   시간.
d   일.
w   주.
y   해 (365 일).

-E  ‘-E’ 옵션을 사용하면(자) limits (은)는 계승하고 있는 환경을 완전하게 무시합니다.

-a  이 옵션은 특정의 리소스의 설정이 지정되어 있어도, 모든 리소스의 설정을 표시시킵니다. 예를 들면, USENET 뉴스 시스템의 시작시에 코어덤프를 무효로 하고 싶다 하지만, 'news'어카운트에 적용되는 그 외의 모든 리소스의 설정을 행해 싶은 경우는, 다음과 같이 사용합니다:

        eval `limits -U news -aBec 0`

    setrlimit(2) 콜과 같이, 슈퍼 유저만이 "hard" 리소스 제한을 끌어올리는 와 (이)가 할 수 있습니다. root 이외의 유저는 그것을 인하하는지, 리소스의 "soft" 제한을 hard 제한의 범위에서 변경할 수가 있습니다. 프로그램을 실행하는 경우, limits 하지만 hard 제한을 끌어올리려고 하면(자), 그것은 치명적 에러로서 다루어지고

진단
limits 유틸리티는, 유저가 어떠한 방법으로 오사용을 하면(자) EXIT_FAILURE 로 종료합니다. 오사용에는 부정한 옵션을 사용했을 경우나, 동시에 설정과 표시의 옵션 (을)를 지정했을 경우, 또는 -e 하지만 프로그램을 기동할 때에 사용되었을 경우등이 포함됩니다. 표시 모드 혹은 평가 모드에서 실행되었을 때, limits (은)는 EXIT_SUCCESS 의 종료 스테이터스로 종료합니다. 명령 모드로 실행되고 커멘드의 실행이 성공했을 때에는, 종료 스테이터스는 실행된 프로그램이 돌려주는 것이 됩니다.

관련 항목
csh(1), env(1), limit(1), sh(1), getrlimit(2), setrlimit(2), login_cap(3), login.conf(5), sysctl(8)

버그
분명한 이유에 의해, limits 유틸리티는, 등호 (``='')가 그 명칭에 포함되는 명령을 취급할 수가 없습니다.

평가용의 출력이 선택되었을 경우, 쉘을 올바르게 인식해, 그 쉘에 있어 출력이 올바른 문장구조법이 되기 위해서(때문에)는, /proc 파일 시스템이 인스톨 되고 mount되어 있지 않으면 안됩니다. 디폴트의 출력은 sh(1) 에 있어 유효한 것이 됩니다. 그 때문에, /proc mount전에 limits (을)를 사용할 수 있는 것은, 표준의 bourne 셸 스크립트중에서만됩니다.

limits 유틸리티는, 출력이나 표시하는 리소스의 설정이 현재의 유저로 유효한가나, 설정 가능 일까에 대해서는 확인을 행하지 않습니다. 슈퍼 유저 어카운트만이 hard 제한을 끌어올릴 수가 있습니다. 주어진 값이 너무 큰 경우는 FreeBSD 커널은 아무것도 출력하지 않고 그 제한치를 지정된 값보다 낮게 설정합니다.