debian设置limits.conf
<p> 最近已经把自己的游戏框架主要功能完成得差不多了,决定将自己的开发环境从debian7升级到debian9,不然太多第三方依赖都跟不上了。debian10刚出来,MongoDB还没适配,所以暂不考虑。</p><p> 我的主系统是ubuntu14.04,通过VirtualBox安装debian9作为开发系统。本地的目录通过VirtualBox的目录共享功能挂载上去,然后用root用户进行编译、运行。</p>
<p> 部署开发环境,少不了要修改/etc/security/limits.conf,让系统可以coredump,方便debug。顺便改下最大文件数。这本来也很简单,就加两行配置。</p>
<div class="cnblogs_code">
<pre>* soft core unlimited
* soft nofile 65535</pre>
</div>
<p> 然而重启后用ulimit -a查看发现它死活不生效。我虽然不记得当初部署debian7时改了哪些配置,但debian7的配置文件就是这么改的。猜测是debian9做了改动导致没生效,只能网上找资料一步步测试。</p>
<p> 1. pam模块是否启用</p>
<div class="cnblogs_code">
<pre>/etc/pam.d/login
/etc/pam.d/sshd
/etc/pam.d/su</pre>
</div>
<p>查看以上几个文件,都包含 <code>session required pam_limits.so 所以是启用了的。</code></p>
<p>2. ssh是否启用pam</p>
<p>我是通过ssh连上去的开发的,这个也需要排查下</p>
<div class="cnblogs_code">
<pre>cat /etc/ssh/sshd_config | grep UsePAM
UsePAM yes</pre>
</div>
<p>ssh也是启用的。然后在VirtualBox的界面登录也发现配置没生效,这个原因排除掉。</p>
<p>3. hard limit没设置</p>
<p> </p>
<p>man limits.conf里有说到</p>
<div class="cnblogs_code">
<pre>for enforcing hard resource limits. These limits are set by the superuser and enforced by the Kernel. The user cannot raise his requirement of system resources above such values.</pre>
</div>
<p>虽然之前从来没设置过hard limit,但也总得试下。于是我又加了一行</p>
<div class="cnblogs_code">
<pre>* hard nofile 65535</pre>
</div>
<p>重启后也没有生效。</p>
<p>4. 查看日志,看是否有错误</p>
<div class="cnblogs_Highlighter">
<pre class="brush:bash;gutter:true;">cat /var/log/auth.log
Jul 21 12:25:01 debian CRON: pam_unix(cron:session): session opened for user root by (uid=0)
Jul 21 12:25:01 debian CRON: pam_unix(cron:session): session closed for user root
Jul 21 12:25:29 debian login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)也不</pre>
</div>
<p>也没有发现什么异常,说明配置格式、权限都没什么问题。</p>
<p>到这里,网上常用的方法该试的都试了,都没能让。最后在https://serverfault.com/questions/610130/how-to-set-ulimit-value-permanently上有一个回复</p>
<div class="cnblogs_code">
<pre>Boom. * wildcard doesn't work for root. I added root instead of *, and it's working. Thank you! – NiCk Newman Jun 13 '16 at 15:25</pre>
</div>
<p>*这个通配符对root用户没有效的。我测试了下,确实如此,另一个号用ulimit -a查看配置修改成功。由于我部署环境一直用root,没发现这个。最后把用户名都改为root,重启后配置生效。</p>
<div class="cnblogs_code">
<pre>root soft core unlimited
root soft nofile 65535
* soft core unlimited
* soft nofile 65535</pre>
</div>
<p>网上查了下资料,发现确实有这个限制。</p>
<div class="cnblogs_code">
<pre>man 5 limits.conf
NOTE: group and wildcard limits are not applied to the root user. To set a limit for the root user, this field must contain the literal username root.</pre>
</div>
<p> </p><br><br>
来源:https://www.cnblogs.com/coding-my-life/p/11220989.html
頁:
[1]