ubuntu 22.04 如何调整进程启动后能打开的文件数限制

在 Ubuntu 22.04 中,可以通过修改系统配置来调整进程启动后能够打开的文件数软限制。软限制是指操作系统允许单个进程打开的文件描述符的最大数量。以下是调整该限制的方法:

1. 查看当前限制

首先,你可以通过 ulimit 命令查看当前的软限制和硬限制:

ulimit -n

这个命令会返回当前进程可以打开的最大文件数(软限制)。

2. 临时调整(仅对当前会话有效)

你可以使用 ulimit 命令来临时调整当前 shell 会话中的文件打开限制:

ulimit -n 65535

这将把软限制设置为 65535。请注意,这个限制仅在当前终端会话中有效,退出会话后会恢复默认设置。

3. 永久调整

要永久修改文件打开限制,需要修改系统配置文件,确保新的设置在每次系统启动时生效。

(a) 修改 /etc/security/limits.conf

编辑 /etc/security/limits.conf 文件,设置适当的软限制和硬限制。打开该文件进行编辑:

sudo nano /etc/security/limits.conf

然后添加如下行:

root soft nofile 65535
root hard nofile 65535

这将设置root用户的软限制和硬限制都为 65535。

注意
1)我尝试了 * soft nofile 65535,本来想设置所有用户,但没有成功。
2)如果是nginx,则需要添加(nginx是以nginx启动的)
nginx soft nofile 65535
nginx hard nofile 65535

(b) 修改 /etc/pam.d/common-session/etc/pam.d/common-session-noninteractive

确保 PAM(可插拔认证模块)能够应用这些限制。编辑以下文件:

sudo nano /etc/pam.d/common-session

在文件的末尾添加以下行:

session required pam_limits.so

这将确保 PAM 模块在会话启动时加载限制配置。

© 修改 /etc/sysctl.conf (可选)

有时候,内核级别的限制可能会影响文件描述符的上限。如果需要,你还可以调整内核参数:

sudo nano /etc/sysctl.conf

添加以下行:

fs.file-max = 1000000

然后应用更改:

sudo sysctl -p

4. 重启系统

为了确保所有更改生效,最好重启计算机或重新登录。

5. 验证

重启后,可以使用以下命令验证设置是否成功:

ulimit -n

或者查看系统级别的文件描述符限制:

cat /proc/sys/fs/file-max

这样,你就可以根据需要调整 Ubuntu 22.04 中进程的文件打开数软限制了。

6. 对于 systemd 启动的服务

如果你的进程是通过 systemd 启动的(例如作为服务或后台进程),limits.conf 配置也可能不会直接生效。这是因为 systemd 管理的进程有自己的资源限制机制。

  • 要为 systemd 管理的服务设置文件描述符限制,你需要编辑相应服务的配置文件(如 /etc/systemd/system/your-service.service),并在 [Service] 部分中设置 LimitNOFILE

    [Service]
    LimitNOFILE=65535
    

    然后重新加载 systemd 配置并重启服务:

    sudo systemctl daemon-reload
    sudo systemctl restart your-service
    

如何判定某个进程的文件数打开限制:
cat /proc/$(pgrep nginx | head -n 1)/limits | grep ‘Max open files’

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/59925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Halcon resistor.hedv 使用多个对焦级别提取深度

depth_from_focus * Extract depth using multiple focus levels * 使用多个对焦级别提取深度 Names : [] * 初始化一个空数组,用于存储图像名称 dev_close_window () * 关闭当前打开的图像窗口 for i : 1 to 10 by 1 * 循环开始,从1到10 …

C语言 | Leetcode C语言题解之第546题移除盒子

题目: 题解: int dp[100][100][100];int calculatePoints(int* boxes, int l, int r, int k) {if (l > r) {return 0;}if (dp[l][r][k] 0) {int r1 r, k1 k;while (r1 > l && boxes[r1] boxes[r1 - 1]) {r1--;k1;}dp[l][r][k] calcu…

玩的花,云产品也能拼团了!!!

说起拼单大家都不陌生,电商一贯的营销手段,不过确实可以给消费者省下一笔钱。双11到了,腾讯云产品也玩起了拼团,这明显是对开发人员和各企业的福利。 对于有云产品需求的个人或企业,这次绝对是难得的一次薅羊毛机会。…

win10@win10 配置openssh服务

1.下载离线包:https://github.com/PowerShell/Win32-OpenSSH/releases 2.然后管理员打开powershell,cd到这个安装包放置的目录中来,输入以下命令:powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 此时要注意pow…

独孤思维:曾经副业赚大钱的人,怎么不见了

01 总有一双眼睛默默关注你。 别以为自己每天做项目,日更文章,没人看。 总会有人默默观察你。 看你能坚持多久,看多段时间,你是不是还在。 今天上午,有个2年前认识的副业同行,今天突然跟我发消息。 说…

全面解析:网络协议及其应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 # 全面解析:网络协议及其应用 文章目录 网络协议概述定义发展历程主要优势 主要网络协议应用层协议传输层协议网络层…

Linux系统编程之--多线程

一.线程概述 线程是允许应用程序并法执行多个任务的一种机制,提高操作系统的运行效率. 线程是轻量级的进程(LWP),在Linux环境下线程的本质仍是进程 查看指定进程的LWP号:ps -LF pid 二.进程与线程的区别(重点) 一个进程可以包含多个线程,同一个程序中的所有线程均会独立执行…

技术总结(二十四)

一、Redis 分布式锁的常见使用场景有哪些? 资源竞争控制 数据库事务控制:在分布式系统中,多个服务可能会同时对数据库中的同一行数据进行操作。例如,在一个电商系统里,多个订单处理服务可能会同时尝试更新同一个订单的…

webWorker基本用法

我们都知道js是一个单线程的语言,当线程堵塞时,可能会导致页面无法正常交互,如一些复杂的可视化处理。即使是异步处理,也只是将其暂存到任务队列中去,等主线程执行完后依然会从任务队列中取过去。 为此,js提…

【1】虚拟机安装

1.安装VMware WorkStation Pro VMware下载地址: 2.新建虚拟机 centos7下载地址:centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云

2-149 基于matlab的LDPC译码性能分析

基于matlab的LDPC译码性能分析,LDPC(Low-Density Parity-Check)码作为编码技术,具有优秀的纠错性能和较低的编解码复杂度。为保证可靠的数据传输,对传输过程中可能出现的信道噪声、干扰等进行模拟和分析。分析对比了误…

游戏开发--C#面试题

游戏开发--C#面试题 C#1. 值类型和引用类型的区别2. 重载和重写的区别3. ArrayList和List的区别4. List底层是什么实现的?5. 抽象类和接口的区别6. 静态成员和⾮静态成员的区别7. 装箱和拆箱是指什么?8. 值和引用类型在变量赋值时的区别是什么&#xff1…

Systemd:tmpfiles

Systemd提供了一个结构化的可配置方法来管理临时文件和目录,即systemd-tmpfiles,可以创建、删除和管理临时文件的服务。 $ systemctl list-units --all | grep systemd-tmpfilessystemd-tmpfiles-clean.service load…

TDengine 集群能力:超越 InfluxDB 的水平扩展与开源优势

随着物联网、车联网等领域的快速发展,企业所面临的数据采集量呈爆炸式增长,这对 IT 基础设施和数据库提出了严峻挑战。传统单机版数据库逐渐无法应对高并发的数据写入和复杂的查询需求。因此,底层数据库必须具备水平扩展能力,以确…

DAY23|回溯算法Part02|LeetCode: 39. 组合总和 、40.组合总和II 、131.分割回文串

目录 LeetCode: 39. 组合总和 基本思路 C代码 LeetCode: 40.组合总和II 基本思路 C代码 LeetCode: 131.分割回文串 基本思路 C代码 LeetCode: 39. 组合总和 力扣代码链接 文字讲解:LeetCode: 39. 组合总和 视频讲解:带你学透回溯算法-组合总和…

selenium大量并发连接驱动超时

我的业务是根据数据生成一大片报表图,组成一个word文档,量大概10~100之间,挨个执行太慢了,15分钟左右,为了加快速度使用了多线程,而多线程又被机器速度限制,一旦跑的多了,就会有线程…

【linux】再谈网络基础(二)

8. 再谈端口号 (一)与协议之间的关系 端口号(Port)标识了一个主机上进行通信的不同的应用程序 在TCP/IP协议中, 用 "源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识…

OpenCV视觉分析之目标跟踪(12)找到局部的最大值函数meanShift()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在反向投影图像上找到一个对象。 meanShift 是一种用于图像处理和计算机视觉领域的算法,特别适用于目标跟踪、图像分割等任务。该算…

VS2022配置OpenGL

下载地址: https://download.csdn.net/download/hgaohr1021/89974202 1、下载后,直接把OpenGL文件,全部放在 D:\Program Files这里,OpenGL这个名字也不要改!!! 2、把文件PropertySheetOpenGL.p…

nvlink 训练笔记

目录 还没测试出效果 还没测试出效果 import torch import torch.nn as nn from torch.utils.data import DataLoader from torchvision.datasets import CIFAR10 from torchvision.transforms import ToTensor# 定义上述的大型全连接层模型 class LargeFullyConnectedModel(…