调整ubuntu 文件句柄数

本文指导如何解决Ubuntu中调整文件句柄数时出现的限制问题,通过修改/etc/security/limits.conf文件和配置/etc/profile来增加系统允许的最大文件句柄数。包括通过root权限进行系统级配置和确保配置在重启后生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用如下命令查看当前最大文件句柄数:

  ulimit -n  

ulimit -n

 输出:1024

解决方案:

1.调整Ubuntu下的文件句柄数。

查看这篇文章:

http://blog.youkuaiyun.com/zhaiqi618/article/details/5616998  中的

1. #vi /etc/profile,增加ulimit -HSn 65536 将文件句柄数修改到10240,但执行后,使用

source /etc/profile之后,提示:

bash: ulimit: open files: 无法修改 limit 值: 不允许的操作
于是查找到这篇:


 
写道
为啥root用户是可以的?普通用户又会遇到这样的问题? 看一下/etc/security/limits.conf大概就会明白。 linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。 超出上限的修改就会出“不允许的操作”这样的错误。
 

于是我用root权限修改了/etc/security/limits.conf
文件,增加以下内容:

*               soft     nproc          10240 
*               hard    nproc           10240 
*               soft     nofile          10240 
*               hard    nofile          10240  
*代表domain,影响到的域,我这里设置了全部。

soft/hard :代表软性或者硬性限制
nproc:max number of processes 设置最大的进程数
nofile:max number of open files 设置最大的文件句柄数

再编辑/etc/pam.d/common-session,加入一行,之所以加入这行,是因为需要在下次重启的时候,能够让用户直接修改
 /etc/profile中的文件句柄数生效。http://www.ccs.neu.edu/home/battista/articles/winbind/pam.html  (具体这个文件是做什么用的,我在下次再讨论下。)
session required pam_limits.so  
 
再编辑/etc/profile文件,加入刚才的内容:
ulimit -HSn 10240  

 此时执行:
   source /etc/profile 仍然会提示:   
bash:
ulimit: open files: 无法修改 limit 值: 不允许的操作
  
  这是因为需要重启电脑,否则更改不会立即生效。

检查:
   ulimit -a 这个是列出当前系统的所有内容限制
   ulimit -n 这个是列出当前系统能够打开最大的文件句柄数。

 重启电脑之后,就可以使用root方式进行修改/etc/profile中的 ulimit -HSn 后的 数字,再执行source /etc/profile,就可以马上看到效果了。

原文地址:http://willam2004.iteye.com/blog/1199687

### 已删除文件仍占用存储空间的原因分析 在 Ubuntu 系统中,当一个文件被标记为已删除时,实际上可能仍然存在某些进程持有对该文件的打开句柄。这种情况下,即使文件从目录结构中移除,其数据块仍未释放给操作系统用于其他用途[^1]。 传统磁性硬盘的行为表明,在删除操作执行后,仅清除了文件系统的元数据中的链接信息,而实际的数据并未立刻清除[^3]。对于固态硬盘 (SSD),虽然机制有所不同,但如果文件正由某个运行中的程序保持打开状态,则同样不会真正回收这些资源直到该程序关闭或者重新启动。 因此,在排查此类问题时需考虑是否有长期运行的服务或守护进程持续访问已被逻辑上“删除”的日志或其他大容量临时文件等情况发生。 ### 解决方案 #### 方法一:重启相关服务 如果知道哪些具体应用正在使用那些看似丢失但实际上还占着地方的文档的话,最简单粗暴的办法就是停止再开启对应的服务: ```bash sudo systemctl restart <service_name> ``` 这一步骤能够强制结束所有关联到特定命名管道或者其他形式特殊文件描述符上的活动连接,从而允许内核清理掉背后真正的二进制资料内容。 #### 方法二:查找并终止占用进程 通过 `lsof` 命令可以帮助定位哪些进程仍旧维持对已经不存在于任何可见路径下的实体对象的引用: ```bash sudo lsof | grep '(deleted)' ``` 上述命令将会返回一系列列表项,其中包含了每一个涉及到了已经被标注成"(deleted)"状况的对象以及它们所属的具体PID(Process ID)数值等细节信息。接着就可以依据得到的结果来决定是否要杀掉那个不必要继续存活下去的任务实例了: ```bash kill -9 <process_id> ``` 请注意这里采用的是信号编号9(SIGKILL), 它代表无条件杀死目标进程而不给予它机会去做任何形式正常的退出处理动作. #### 方法三:手动触发垃圾收集过程 针对部分特殊情况比如数据库引擎内部缓存等原因造成的残留现象, 可尝试调用专门设计用来优化整理碎片化区域布局效率的功能模块来进行一次全面扫描与修正工作. 对于ext4类型的分区来说, 运行如下指令可能会有所帮助: ```bash sudo tune2fs -C 0 -T now /dev/sdXN ``` 这里的参数 `-C 0` 和 `-T now` 是告诉文件系统现在就应该假装达到了最大挂载次数并且超过了上次检查时间间隔限制所以有必要马上安排一次完整的自检流程以发现潜在错误包括未正确释放的空间区块等问题所在位置然后加以修复调整使之恢复正常可用状态.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值