프로세스가 내가 설정한 새로운 열린 파일 구성을 사용하고 있지 않습니까?

프로세스가 내가 설정한 새로운 열린 파일 구성을 사용하고 있지 않습니까?

사용자로 실행 중인 프로세스가 있고 golden해당 사용자가 시작한 모든 프로세스가 해당 설정을 사용해야 하도록 해당 사용자에 대한 열린 파일 제한을 늘리려고 합니다. 제한을 다음 파일로 변경했는데 변경 사항이 적용되지 않았습니다.

/etc/security/limits.conf:

*       soft    nofile  65535
*       hard    nofile  100000

*위와 같이 와일드카드 제한을 변경하여 모든 사용자에 대한 설정을 수정했습니다 . 이제 골드 사용자로 프로세스를 시작하고 cat 명령으로 실행했는데 8092열린 파일로 사용되는 것을 확인했는데 왜 변경 사항이 적용되지 않는지 잘 모르겠습니다.

golden@machineA:~$ cat /proc/1442/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        unlimited            unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             483036               483036               processes
Max open files            8092                 8092                 files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       483036               483036               signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

Ubuntu 14.04 상자를 사용하고 있습니다. 여기서 무슨 일이 벌어지고 있는지 아시나요? golden사용자가 시작한 모든 프로세스가 새로운 열린 파일 구성을 사용하도록 하려면 어떻게 해야 합니까 ? 8092는 값을 재정의하지 않기 때문에 어딘가에 하드코딩되어 있는 것 같습니다.

cat /proc/sys/fs/file-max
6145946

답변1

/etc/limits로그인 시 설정됩니다. 여기의 변경 사항은 프로세스가 시작될 때가 아니라 사용자가 로그인할 때 적용됩니다. 프로세스 시작을 위한 구성이 없습니다. 프로세스는 상위 프로세스의 제한 사항을 상속합니다.

프로세스는 항상 한계를 낮추도록 선택할 수 있습니다. 로그인 세션을 시작하고 ulimit -a쉘에서 실행하여 상한을 확인한 후 프로세스를 실행하면그 껍질에, 프로세스의 한계는 결국 감소합니다. 이는 프로세스의 한계가 낮아지는 것을 의미합니다. 그렇다면 프로그램 구성을 조사하여 이를 방지할 수 있는지 확인해야 합니다.

관련 정보