Linux
程序沒有使用我設置的新打開文件配置?
我有一個以
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
/etc/limits
是登錄時間設置。那裡的更改在使用者登錄時應用,而不是在程序啟動時應用。程序啟動沒有配置。程序繼承其父程序的限制。請注意,程序始終可以選擇降低其限制。如果您啟動登錄會話,並通過在 shell 中執行來確認更高的限制,並在該shell
ulimit -a
中執行程序,並且程序的限制最終降低,則意味著該程序正在降低其限制。如果是這樣,您將不得不探索程序的配置,看看您是否可以阻止它這樣做。