Linux

程序沒有使用我設置的新打開文件配置?

  • September 9, 2017

我有一個以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 中執行來確認更高的限制,並在該shellulimit -a中執行程序,並且程序的限制最終降低,則意味著該程序正在降低其限制。如果是這樣,您將不得不探索程序的配置,看看您是否可以阻止它這樣做。

引用自:https://unix.stackexchange.com/questions/391244