【linux】/etc/security/limits.conf配置文件详解、为什么限制、常见限制查看操作

文章目录

  • 一. limits.conf常见配置项详解
  • 二. 文件描述符(file descriptor)简述
  • 三. 为什么限制
  • 四. 相关操作
    • 1. 展示当前资源限制
    • 2. 查看系统当前打开的文件描述符数量
    • 3. 查看某个进程打开的文件描述符数量
    • 4. 各进程占用的文件描述符

/etc/security/limits.conf 是一个用于配置用户或用户组资源限制的配置文件。这个文件通常用于设置系统资源的软限制和硬限制,以及一些特殊权限。

一. limits.conf常见配置项详解

下面是一些 /etc/security/limits.conf 文件中可能包含的常见配置项:

在这里插入图片描述

描述

  1. 第一列表示用户和组(@开头),这里的 * 代表所有用户。第二列表示软限制还是硬限制,第三列表示限制的资源类型,第四列表示限制的最大值 hard和soft的区别。
  2. soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错,一般情况下都是设为同一个值。
  3. core是内核文件,nofile是文件描述符,noproc是进程,一般情况下只限制文件描述符数和进程数就够了

注意

修改了 /etc/security/limits.conf 文件后,需要注销并重新登录用户,或者重新启动相关的服务才能使配置生效。

 

二. 文件描述符(file descriptor)简述

文件描述符是一个索引

Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。在操作文件的时候,如果每操作一次就找一次名字,这就会耗费大量的时间和效率。所以Linux中规定每一个文件对应一个索引,与文件交互时直接找索引即可,这里的索引就是文件描述符。

文件描述符(file descriptor)是内核为了高效管理这些已经被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符来实现

 
文件描述符表格
在这里插入图片描述
Linux内核对所有打开的文件有一个文件描述符表格,里面存储了每个文件描述符作为索引与一个打开文件相对应的关系,简单理解如上图这样一个数组,文件描述符(索引)就是文件描述符表这个数组的下标,数组的内容就是指向一个个打开的文件的指针。

 
 

三. 为什么限制

为什么要限制打开的文件描述符?

  1. 资源问题:每个打开的文件都需要消耗内存来管理,而内存是有限的。
  2. 安全问题:如果不限制的话,有不怀好心的人启动一个进程来无限的创建和打开新的文件,会让服务器崩溃。

 

为什么限制进程数?

  • 资源管理: 进程数限制有助于控制系统资源的分配和使用。每个进程都需要分配一些系统资源,如内存、CPU 时间、文件描述符等。如果允许无限制地创建大量进程,可能会消耗掉系统的资源,导致系统变得不稳定或崩溃。

  • 性能和稳定性:过多的进程可能会导致系统性能下降。当系统负载增加时,会增加调度和管理进程的开销,可能导致响应时间变长,甚至影响到系统的稳定性。

  • 安全性: 进程数限制也有助于防止恶意软件或恶意用户通过大量的进程耗尽系统资源,从而对系统进行拒绝服务攻击(Denial of Service,DoS)或拖垮系统的运行。

  • 避免资源竞争: 限制进程数也有助于避免资源竞争。在某些情况下,过多的进程可能争夺相同的资源,导致竞争、阻塞或性能下降。

 

四. 相关操作

1. 展示当前资源限制

 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) 63456
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 327680
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) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

关注几个值

  • max locked memory (kbytes, -l): 最大锁定内存大小限制,表示进程可以锁定在内存中的最大数据量。这里设置为 64 KB。

  • open files (-n): 打开文件的数量限制,表示进程可以同时打开的文件数量。这里设置为 327680。

  • pipe size (512 bytes, -p): 管道大小限制,表示管道缓冲区的最大大小。这里设置为 8,表示管道缓冲区的大小为 8 * 512 字节。

  • stack size (kbytes, -s): 栈大小限制,表示进程栈的最大大小。这里设置为 8192 KB。

  • max user processes (-u): 最大用户进程数限制,表示一个用户可以创建的最大进程数量。这里设置为 4096。

 

2. 查看系统当前打开的文件描述符数量

sudo cat /proc/sys/fs/file-nr
1184    0       1610170
  • 第一个数:表示当前系统分配后已使用的文件描述符数,
  • 第二个数:表示分配后未使用的(内核2.6版本中这个值总是为0,这并不是一个错误,它意味着已经分配的文件描述符总会被使用),
  • 第三个数:等于最大值file-max。

 

3. 查看某个进程打开的文件描述符数量

$ lsof -p 20262 |wc -l
5

 

4. 各进程占用的文件描述符

lsof -n |awk '{print $10}'|sort |uniq -c |sort -nr|head -10
9838 
 488 IDEA
 279 Chrome.app/Contents/Frameworks/Google
 150 Book
  96 id
  58 Layouts/AppleKeyboardLayouts.bundle/Contents/Resources/AppleKeyboardLayouts-L.dat
  50 Support/Google/Chrome/Subresource
  41 (ESTABLISHED)
  36 Support/XMind/Electron
  33 Support/Google/Chrome/optimization_guide_model_store/25/63922A0C010C80A5/6B406658B3AA7A20/visual_model_desktop.tflite

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树和二叉树的基本概念和堆的实现

树的概念及结构 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 1.有一个特殊的结点&#…

第一类瑞利索末菲标量衍射模型的方孔衍射的空间像计算(附python计算代码)

记第一类瑞利索末菲标量衍射模型的方孔衍射的空间像计算(附python计算代码) RS type 1 衍射空间像计算傅里叶变换采样条件实际计算计算要求傅立叶变换法计算直接卷积方法计算代码傅立叶变换方法直接卷积https://zhuanlan.zhihu.com/p/624292239 Goodman, J. W. (2004). Intro…

logistic回归详解

为什么不直接统计标签数和预测结果数,计算精度? 因为 存在梯度为0的情况梯度不连续 为什么叫logistic回归 logistic是因为加了一个sigmoid函数,将输出预测值映射到【0,1】 有时候使用MSE损失函数,拟合 有时候使用c…

PyLMKit(5):基于网页知识库的检索增强生成RAG

基于网页知识库的检索增强生成RAG 0.项目信息 日期: 2023-12-2作者:小知课题: RAG(Retrieval-Augmented Generation,检索增强生成)是一种利用知识库检索的方法,提供与用户查询相关的内容,从而…

基于SpringBoot实现SSMP整合

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…

【Gstreamer】自定义Plugin及调用Plugin

Gstreamer自定义Plugin及调用自定义Plugin Gstreamer支持开发者自己创建Plugin,创建后的Plugin可以通过工具gst-inspect-1.0查看,并在代码中调用自定义的plugin。 Gstreamer 官网中给出了Plugin创建教程,但实际上如果按照教程一步步走&…

kali学习

目录 黑客法则: 一:页面使用基础 二:msf和Windows永恒之蓝漏洞 kali最强渗透工具——metasploit 介绍 使用永恒之蓝进行攻击 ​编辑 使用kali渗透工具生成远程控制木马 渗透测试——信息收集 域名信息收集 黑客法则: 一&…

你好!二分查找【JAVA】

1.初次相识 二分查找又称折半查找,是一种在有序数组中查找特定元素的算法。二分查找的基本思想是:通过不断地二分数组的中间元素,缩小查找区间,直到找到目标元素或者确定目标元素不存在为止。 二分查找的时间复杂度为O(logn)&…

CIS|安森美微光近红外增强相机论文解析

引言 在之前的文章中,我们介绍了索尼、安森美以及三星等Sensor厂家在车载领域中的技术论文,分析了各个厂家不同的技术路线、Sensor架构以及差异点。今天,笔者借豪威科技在移动端200Mega Pixels产品的技术论文,讲解消费级CIS传感器…

Linux查看计算机处理器相关的信息

采用命令lscpu。部分结果如下:

人工智能时代:AIGC的横空出世

🌈个人主页:聆风吟 🔥系列专栏:数据结构、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 什么是AIGC?二. AIGC的主要特征2.1 文本生成2.2 图像生成2.3 语音生成2.4 视…

openGauss学习笔记-137 openGauss 数据库运维-例行维护-检查和清理日志

文章目录 openGauss学习笔记-137 openGauss 数据库运维-例行维护-检查和清理日志137.1 检查操作系统日志137.2 检查openGauss运行日志137.3 清理运行日志 openGauss学习笔记-137 openGauss 数据库运维-例行维护-检查和清理日志 日志是检查系统运行及故障定位的关键手段。建议按…

Azure Machine Learning - Azure AI 搜索中的索引器

在 Azure AI 搜索中,搜索索引是可搜索的内容,可供搜索引擎用于索引编制、全文搜索和筛选后查询。 索引由架构定义并保存到搜索服务中,第二步是数据导入。 除了在主数据存储中,此内容也存在于搜索服务中,这是在新式应用…

堆内存参数如何设置?

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

微软Copilot魔法来袭!用自然语言,点燃你的工作热情

近日我们发布了全新Copilot功能,旨在通过智能化的工作方式,提高企业整体的生产力和客户体验。新一代的Copilot结合了先进的AI技术,通过自然语言交互,为用户提供即时、个性化的信息和解决方案。这一变革性的工具将为现场服务人员提…

(二)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)

一、无人机模型简介: 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、Tiki-taka算法(TTA&#xf…

分析实现HarmonyOS中的Linux内核架构模式

在当今的科技领域,操作系统是各种智能设备运行的关键所在。而在这方面,华为的鸿蒙系统备受瞩目。那么,鸿蒙系统技术架构是怎样的呢?本文将为您揭开这一神秘面纱。 首先,我们需要了解鸿蒙系统的基本架构。鸿蒙系统采用…

Azure Machine Learning - 使用 REST API 创建 Azure AI 搜索索引

本文介绍如何使用 Azure AI 搜索 REST AP和用于发送和接收请求的 REST 客户端以交互方式构建请求。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员&…

windows判断exe应用程序是否在使用的bat脚本

脚本 REM 查询进程是否存在 tasklist|findstr /i "mysqld.exe">nul &&echo y >2.log ||echo n >2.log REM 读取文本内容赋值给变量 set /P resu<2.log if %resu% y (echo process in use ) else (echo process not in use )我们已mysqld.exe…

【网络安全技术】实体认证技术Kerberos

一、什么是Kerberos Kerberos解决的是客户端与服务器通信场景中&#xff0c;确保客户端服务器双方的身份可信&#xff0c;并提供对称密钥的分发来加密传输。是一个应用层的协议。 二、一个简单的模型 1.看这个基础的模型&#xff0c;客户端要和服务器通信&#xff0c;他先将自…