다른 사용자의 ulimit를 확인하고 열린 파일을 어떻게 변경합니까? ERROR 2014-09-12 17 :

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:
$


답변

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

답변

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

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

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


답변

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