다른 사용자의 ulimit를 확인하고 열린 파일을 어떻게 변경합니까?


18

gearman 사용자로 프로세스를 실행 중이며이 open files불쾌한 오류가 발생하지 않도록 변경하고 싶습니다 .

ERROR 2014-09-12 17 : 49 : 14.000000 [main] accept (너무 많은 열린 파일)-> libgearman-server / gearmand.cc : 788

Ubuntu에서 다른 사용자로 ulimit를 실행하고 열린 파일을 변경하려면 어떻게해야합니까? 현재 기어 맨으로 로그인하지 않았지만 루트 액세스 권한이 있습니다. 나는 이것을 시도했다 :

su gearman --shell /bin/bash --command "ulimit -n"

여기에 권장 되지만 아무것도 출력되지 않습니다.

$ su gearman --shell /bin/bash --command "ulimit -n"
Password: 
$

답변:


25

Google 검색 중에 우연히 발견하고 Tony 의 의견이 유용하다는 것을 발견했기 때문에 이것을 다시 방문하십시오 . 그들이 시작한 프로세스를 찾은 다음를 확인하십시오 proc/${id}/limits.

구체적으로 특별히:

$ ps -u username  # look up processes owned by user
$ sudo grep 'open files' /proc/${id}/limits  # find "Max open files" line for process ID

2
이것은 데비안에서 redis 사용자의 현재 ulimit를 찾는 데 사용되는 대답입니다.
tholu

6

ulimit명령 을 실행하면 실행 중인 프로세스 ulimit(쉘) 및 모든 하위 프로세스 에만 영향을줍니다 . 따라서을 실행할 때 bash --command "ulimit -n"해당 bash 인스턴스의 열린 파일 수에만 영향을 미치고 bash가 종료되므로 향후 프로세스에는 영향을 미치지 않습니다.

따라서 실제 프로세스의 열린 파일 제한을 늘리기 위해 원하는 것을 달성하려면 limits.conf특정 기어 맨 사용자의 열린 파일 제한을 높이기 위해 편집 하는 것이 더 합리적 입니다.

다른 곳이나 여기 에서 limits.conf의 예를 참조 하십시오 .


그것은 또한 내가 찾은 것이지만 그것이 "효과를 얻었는지"확인할 수 있기를 바랍니다. 나는 더 이상 겪고있는 문제를 얻지
Tony

10
이것은 당신이 확인하는 방법입니다 more /proc/<proc_id>/limits ... 아마도 답을 추가 할 가치가 있습니다
Tony

5
limits.conf의 위치도 언급 할 가치가 있습니다./etc/security/limits.conf
UpTheCreek

1

를 사용해보십시오 su - <USERNAME> -c ulimit' -Hn'. 방금 CEntOS 7에서 테스트했으며 작동합니다.


1
<USERNAME>로그인 할 수없는 경우 (nologin 셸이있는 경우 ) 작동하지 않습니다 .
dr01
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.