由登录服务器时ulimit配置报错,也谈下ulimit配置

最近在登录开发机时,有报错如下:

-bash:  cannot modify limit: Operation not permitted

一定是哪个地方有ulimit设置,想想看,用户登录或用户su命令切换时,系统会调用以下脚本:

/etc/profile.d/file 
    /etc/profile 
    /etc/bashrc 
    /lebyzhao/.bashrc 
    /lebyzhao/.bash_profile

可能是这里面有ulimit -n的配置,检查一下,果然在/etc/profile中,有行ulimit -n 65535

当你以lebyzhao登录时,你不是root,没有权限执行,才显示了上面的报错。

这里注释掉/etc/profile这行即无报错。

ulimit -n配置很关键,所以这里在啰嗦一下,因为这个和当前登录session、用户甚至用户组limits配置相关,有时看起来很蹊跷。

除了应用ulimit -n, 也可以修改linux的软硬件限制文件/etc/security/limits.conf:

如添加如下代码: 
    * soft nofile 65535 
    * hard nofile 65535 
    所有用户打开的文件数被限制为65535。简单解释下这里命令格式是users type item value,users是以符号@开头的用户名或组名(不加@测试也可以),*表示所有用户,type设置为hard or soft。item指定想限制的资源,如cpu,core nofile nproc or maxlogins,value则就是相应的限制值。

这样登录的时候pam就会从从limits.conf中设置上限(当然,ulimit命令可以在低于上限的范围内再行设置)

网上看,好像有内核还提供了设置接口:/proc/sys/fs /nr_open,大家有兴趣可以在搜索看下。

总之,我们用ulimit -n 命令在本次shell session中、服务器进程启动(脚本)时、用户登录如/etc/profile里进行设置,或者设置limits.conf,都可以达到你的目的,场景和优劣也很明显。

 

如果你还有兴趣:我们用sudo limit -n 65536测试设置时,会提示找不到命令,原因是ulimit 和cd等一样,是内核内建的指令,并不是/usr/sbin等下面的二进制程序命令。那请问一下,如果非要在自己(非root)登录后设置,是否可以这样:sudo sh -c "ulimit -n 65535"?结合sudo、用户来看,也不难理解可行与否了。

时间: 2024-10-10 08:56:47

由登录服务器时ulimit配置报错,也谈下ulimit配置的相关文章

设置DAG共享见证服务器提示“拒绝访问”报错解决方法

问题说明: ========== 设置DAG共享见证服务器时出现如下报错: -------------------------------------------------------- Microsoft Exchange 警告 -------------------------------------------------------- 保存更改时出现以下警告: Set-DatabaseAvailabilityGroup 已完成 警告: 指定的见证服务器dc.doubioa.ren不是

Debug程序时,VS报错:由于端口“*****”正在使用,无法启动VS开发服务器

Debug程序时,VS报错:由于端口“*****”正在使用,无法启动VS开发服务器 解决办法: 右键单击web项目,选择“属性”,选择属性页左侧的web选项卡,在选项卡页面的下部有一个“服务器--使用VisualStuido开发服务器--特定端口”的选项,可以设置为自动分配端口或者修改特定端口

nuget包管理nuget服务器发布包时出现请求报错 406 (Not Acceptable)

在window服务器上部署nuget服务器时,发布包时出现请求报错 406 (Not Acceptable) 验证用户名.密码正确的情况下,还是出现上面错误.后面跟踪服务器日志,发现window\temp文件超过65535,删除过期临时文件后即可 原文地址:https://www.cnblogs.com/94cool/p/10749129.html

学会WCF之试错法——安全配置报错分析

安全配置报错分析 服务端配置 <system.serviceModel> <bindings> <wsHttpBinding> <binding name ="WsHttpBinding_IService" maxReceivedMessageSize="370000" receiveTimeout="00:10:01" maxBufferPoolSize="100"> <

前端ajax用post方式提交json数据给后端时,网络报错 415

项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource: the server responded with a status of 415 (Unsupported Media Type) 后端异常信息:无 报错原因:缺少jackson包 类似问题注意点: springmvc添加配置.注解: pom.xml添加jackson包引用: Ajax请求时没

Spring配置报错- 元素 &#39;beans&#39; 必须不含字符 [子级]

Caused by: org.xml.sax.SAXParseException; lineNumber: 34; columnNumber: 9; cvc-complex-type.2.3: 元素 'beans' 必须不含字符 [子级], 因为该类型的内容类型为"仅元素". 在学习Spring的过程中,配置bean的过程中抛出以上错误, 根据报错提示可以看出是beans元素的子元素中出现了"元素"之外的内容,因此开始排查是否出现了非法字符,,排查到最后发现是自己写

react-native启动时红屏报错:Unable to load script.Make sure you&#39;re either running a metro server or that ....

一.报错信息内容 我是在Android Studio中运行启动react-native项目时报的这个错误 1.报错提示:Unable to load script.Make sure you're either running a metro server( run 'react-native start' ) or that your bundle 'index.android.bundle' is packaged correctly for release. 2.中文翻译:无法加载脚本.请

微信服务器配置---服务器地址(URL) :报错 token验证失败

服务器配置---服务器地址(URL) :报错 token验证失败. 原因之一是: 开发调试环境(本机) 的ip变化,没有及时配置ip白名单. 也可以反向验证:在配置好jeewx工程之公众号信息后,可以点击按钮“重置微信token”,看看是否报错40164: 微信错误:errcode=40164,该错误信息:无效ip 地址,不在白名单中. 原因之二是: netapp的隧道变化了. 原文地址:https://www.cnblogs.com/wuxingang/p/11240050.html

关于SQL镜像配置报错

关于SQL镜像配置报错,会经常提示镜像出错,解决方法如下: 主要有以下原因引起: 1.防火墙,端口不通 2.远程端口未开启 3.SQL的服务未使用域账户,认证无法同步通信 如果以上都不是,说明备份还原有问题,重新在再备份与还原............