为了
增加在Ubuntu
Linux机器上无头
用户下运行的守护程序进程的FD限制,我们在/etc/security/limits.conf中进行了以下更改
soft nofile 10000
hard nofile 10000
我们还在/etc/pam.d/login中添加了所需的会话pam_limits.so.这些更改已反映给已注销并再次登录的所有用户.无论在这些用户下开始什么新流程都会获得新的FD限制.
但是对于在无头用户下运行的守护进程,更改没有得到反映.在无头用户下运行的守护进程可以反映更改的方式是什么?
问题出在守护进程的启动脚本中.它使用setuidgid在无头
用户下运行守护进程.像setuidgid这样的
内容将不会在更改进程的
用户/组时安装limits.conf中设置的资源限制.守护进程应该通过其启动脚本来为自己设置资源限制.通过在启动脚本中设置当前会话的最大FD限制,为守护程序反映了新的限制.这是通过在守护程序的lauching脚本中插入如下所示的ulimit -n行来完成的.
ulimit -n $NEW_MAX_LIMIT
exec setuidgid userxyz /pat/to/daemon.sh