ubuntu下执行ulimit返回“不允许的操作”,问题解决思路
在ubuntu下执行ulimit,希望修改允许的最大打开文件数,但返回“不允许的操作”。
使用ulimit -a查看当前配置
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 127837 max locked memory (kbytes, -l) 16384 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 127837 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
一通搜索后,先使用如下解决办法,修改/etc下的文件,通过修改/etc/security/limits.conf
这个配置文件来改变系统的默认限制。在文件的末尾追加一下内容:
\* soft nofile 81920 \* hard nofile 81920
*
代表除root以外的所有用户,也可以设置为特定用户的名称,soft
表示软限制,nofile
表示文件描述符,81920是新的默认值。
如果需要修改root,需要专门指定 root soft nofile xxx
重启系统后,root已经生效,而普通用户的终端依然没有生效,查找资料,系统的相关修改,修改办法如下:
系统级别的限制##
上面说到修改只对与某一个用户有效,Linux还有系统级别的文件描述符的限制,用户级别的设置是不能超过系统级别的。修改系统级的限制可以通 过sysctl
命令修改:
sysctl -w fs.file-max=1000000
file-max
代表系统内核最多可以打开的文件描述符数量,如果要设置某个进程可以打开的文件描述符数量,可以通过修改nr_open
:
sysctl -w fs.nr_open=1000000
使用sysctl
命令所做的修改也是临时的,要永久修改系统的限制可以通过修改/proc/sys/fs/
下的文件:
echo '1000000' > /proc/sys/fs/file-max echo '1000000' > /proc/sys/fs/nr_open
关于/proc/sys/fs/
目录下各个文件的详细解释,可以阅读这篇文章fs.txt
然而是不相关的啊
最终看到有这么一句提到
PS: ,有时候更改完后使用ulimit -SHn
时仍然会报错,这是需要在/etc/pam.d/common-session
中加入session required pam_limits.so
再次PS ,有时候经过上面的更改后使用ulimit -n
会看到默认值并没有改变,我在ubuntu中遇到这种情况,解决办法是先使用su username
登录当前用户,然后 就可以使用ulimit命令了。原因可能是gnome terminal默认是none-login的,所以我们在配置文件中的修改并没有影响到当前的terminal。
在ubuntu的终端su username,输入密码后,看到默认值已经修改成正确的了。
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 127837 max locked memory (kbytes, -l) 16384 max memory size (kbytes, -m) unlimited open files (-n) 81920 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 127837 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人