사용자로 실행 중인 프로세스가 있고 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
쉘에서 실행하여 상한을 확인한 후 프로세스를 실행하면그 껍질에, 프로세스의 한계는 결국 감소합니다. 이는 프로세스의 한계가 낮아지는 것을 의미합니다. 그렇다면 프로그램 구성을 조사하여 이를 방지할 수 있는지 확인해야 합니다.