csh의 맥락에서 무제한과 제한은 무엇을 합니까?

csh의 맥락에서 무제한과 제한은 무엇을 합니까?

과학적 모델을 실행하기 전에 및 를 호출하는 csh 스크립트를 실행하고 있습니다 unlimit. limit스크립트는 다음과 같습니다(간결하게 하기 위해 잘림).

#!/bin/csh -f
# ...
unlimit
limit
/usr/bin/time $BLD/$EXEC # Where `$BLD/$EXEC` is the path to the model
date
exit

스크립트를 실행하면 다음 오류가 발생합니다.

unlimit
unlimit: memorylocked: Can't remove limit
unlimit: maxproc: Can't remove limit
unlimit: openfiles: Can't remove limit

Bash에서 확인하십시오 ulimit.

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63711
max locked memory       (kbytes, -l) 64
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) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63711
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

unlimit(자원을 지정하지 않고) csh에서 다음을 시도해 보세요 .

$ sudo csh
# unlimit
unlimit: memorylocked: Can't remove limit
unlimit: maxproc: Can't remove limit
unlimit: openfiles: Can't remove limit

limitcsh 출력 및 unlimit지정된 리소스 사용 시도:

$ sudo csh
# whoami
root
# limit
cputime         unlimited
filesize        unlimited
datasize        unlimited
stacksize       8192 kbytes
coredumpsize    0 kbytes
memoryuse       unlimited
memorylocked    64 kbytes
maxproc         63711
openfiles       1024
# unlimit openfiles
unlimit: openfiles: Can't remove limit
# unlimit memorylocked
unlimit: memorylocked: Can't remove limit

저는 우분투 14.04를 실행하고 있습니다:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty

나는 모델을 실행하기 전에 run이 모든 리소스 제약 조건을 제거해야 한다고 생각하며 unlimit, 출력에서 limit​​이를 확인해야 합니다. 루트 사용자가 제한 사항을 제거할 수 없는 이유는 무엇입니까? unlimit루트로만 실행할 수 있나요?

답변1

ulimit는 전체 시스템에 대해 sysctl로 구성된 최대 사용량 이상으로 이러한 리소스의 최대 사용량을 늘리려고 시도합니다. 또한 열린 파일과 같은 특정 리소스를 무제한으로 사용하여 Linux를 구성하는 것은 물리적으로 불가능합니다.

모든 리소스를 제한하는 것은 좋은 생각이 아닙니다. 모델이 실패하면 실제로 몇 GB의 코어 덤프가 필요합니까? 모델 실행 시 병목 현상을 일으키는 리소스만 추가하세요. 모델을 성공적으로 실행할 수 있으므로 이는 코드가 원래 작성된 컴퓨터보다 최신 컴퓨터에서 더 많은 리소스를 사용할 수 있음을 의미합니다.

답변2

보다csh 매뉴얼 페이지, 문서화 limitunlimit내장 기능. unlimit모든 제한사항을 삭제 하는 것이고 limit현재 제한사항을 인쇄하는 것입니다. 나는 이 글을 쓴 사람이 어느 시점에서 일종의 자원 제한 문제에 직면했고 이를 방어 수단으로 사용하여 제한이 없는지 확인하고 제한이 있는 경우 인쇄했다고 추측합니다.

관련 정보