ulimit PICKLE :“작업이 허용되지 않습니다”및“명령을 찾을 수 없습니다”


15

현재 사용자의 최대 열린 파일 수를 늘리려 고합니다.

> ulimit -n
1024

나는 다음과 같이 증가하고 실패하려고합니다.

> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted

그래서 나는 자연스러운 일을하고 임시 허가로 달리려고하지만 실패합니다.

> sudo ulimit -n 4096
sudo: ulimit: command not found

질문

  1. ulimit를 늘리는 방법?
  2. 왜 이런 일이 발생합니까?

Fedora 14 사용


삭제 된 댓글에 응답 : ulimit 4096작동하지 않습니다. 나는 옳다고 생각 -n합니다. 개념 증명으로 내가 먼저 sudo su - root(그러나 루트에 대해서만 변경) 작동합니다.
paislee 2019


답변:


17

ulimit외부 명령이 아닌 쉘 내장입니다. 쉘 프로세스 자체에서 작동하기 때문에 내장 cd디렉토리가 필요합니다. 현재 디렉토리와 같은 한계는 특정 프로세스의 특성입니다.

sudo bash -c 'ulimit -n 4096'작동하지만 bash 프로세스의 한계를 변경하여 sudo도움이되지는 않습니다.

각 한계에는 하드 한계와 소프트 한계의 두 가지 값이 있습니다. 루트 만이 하드 한계를 높일 수 있습니다. 누구든지 하드 한계를 낮출 수 있으며, 소프트 한계는 하드 한계보다 높을 수 없다는 제약 조건만으로 어느 방향 으로든 수정할 수 있습니다. 소프트 한계는 중요한 실제 값입니다.

따라서 모든 프로세스에 열린 파일에 대한 최소 한계가 4096 이상이되도록 준비해야합니다. 소프트 한계를 1024로 유지할 수 있습니다. 많은 파일이 필요한 프로세스를 시작하기 전에 소프트 한계를 높이십시오. 에서 /etc/security/limits.conf, 라인을 추가

paislee hard nofile 4096
paislee soft nofile 1024

여기서 paislee프로세스를 실행하려는 사용자의 이름입니다. 더 높은 한계를 원하는 프로세스를 시작하는 쉘에서 다음을 실행하십시오.

ulimit -Sn unlimited

소프트 한계를 하드 한계로 올립니다.


1
대안은 할 수 sudo bash -c있습니다 sudo -i로그인 쉘을 시작하는 sudo -swhcih 쉘을 시작합니다. 동일한 제한 사항이 적용되지만 다른 상황에서는 유용 할 수 있습니다.
Bram

감사. 관련 질문을해도 될까요? 다른 회신 및 게시물 stackoverflow.com/a/17483998/156458unix.stackexchange.com/a/238413/674unix.stackexchange.com/a/169035/674는 모두를 사용하는 것이 좋습니다 sudo sh -c "ulimit -c 1024 && exec su $LOGNAME". 그러나 모두 ulimit -c 1024exec su $LOGNAME" 단지에 의해 생성 된 쉘에 영향을 미치는 sudo, 그래서 명령의 목적은 무엇인가? exec su $LOGNAME"또한 변경된 제한을 사용하기 위해 의미있는 작업을 수행하지 않습니다. 나는 매우 혼란스럽고 뭔가 빠졌는지 궁금합니다.
Tim

참고 ulimit -Sn unlimited대부분의 쉘에서 작동하지 않습니다. 올바른 방법은 호출 ulimit -a한 다음 ulimit -n <number><number는 하드 한계 (오른쪽 열)입니다.
schily

3

파일을 열고 /etc/security/limits.conf행을 추가하십시오 <user> soft nofile <value>. ulimit루트 사용자로 변경을 사용 하고 동일한 시도하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.