由登录服务器时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 20480
* hard nofile 20480
所有用户打开的文件数被限制为65535。简单解释下这里命令格式是users type item value,users是以符号@开头的用户名或组名(不加@测试也可以),*表示所有用户,type设置为hard or soft。item指定想限制的资源,如cpu,core nofile nproc or maxlogins,value则就是相应的限制值。
这样登录的时候pam就会从从limits.conf中设置上限(当然,ulimit命令可以在低于上限的范围内再行设置)
-H 设置硬资源限制,一旦设置不能增加。 ulimit – Hs 64;限制硬资源,线程栈大小为 64K。
-S 设置软资源限制,设置后可以增加,但是不能超过硬资源设置。 ulimit – Sn 32;限制软资源,32 个文件描述符。如果超过了这个上限,-S 你会得到下面的错误提示:
ulimit: open files: cannot modify limit: Invalid argument
另外,网上看,好像有内核还提供了设置接口:/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、用户来看,也不难理解可行与否了。
由登录服务器时ulimit配置报错,也谈下ulimit配置的更多相关文章
- nuget包管理nuget服务器发布包时出现请求报错 406 (Not Acceptable)
在window服务器上部署nuget服务器时,发布包时出现请求报错 406 (Not Acceptable) 验证用户名.密码正确的情况下,还是出现上面错误.后面跟踪服务器日志,发现window\te ...
- soamanager发布的Webservice服务,调用时出现http500报错
最近再给薪酬那边发布ws服务时出现了报错,调用方反馈了errorCode:BEA-380002.在使用XMLspy工具去调用这个WSDL时候,则反馈http500的错误消息.如下图: 遇到这种问题我通 ...
- Jenkins安装时Web页面报错提示离线安装
先跳过所有. 方法1 先看它的提示:”参考离线Jenkins安装文档“发现链接点不开,我还以为是被墙了呢,FQ以后还是打不开.看来这个参考文档是没有用滴.点击配置HTTP代理跳出如下界面:安装Jenk ...
- 前端ajax用post方式提交json数据给后端时,网络报错 415
项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...
- Fast R-CNN训练自己的数据集时遇到的报错及解决方案
最近使用Fast R-CNN训练了实验室的数据集,期间遇到一些报错,主要还是在配置环境上比较麻烦,但可以根据提示在网上找到解决这些错误的办法.这里我只记录一些难改的报错,以后再遇见这些时希望能尽快解决 ...
- 解决eclipse spring配置报错:cvc-elt.1: Cannot find the declaration of element
解决eclipse spring配置报错:cvc-elt.1: Cannot find the declaration of element 'beans'.Referenced file conta ...
- 当子查询内存在ORDER BY 字句时查询会报错
问题:当子查询内存在ORDER BY 字句时查询会报错 SQL: SELECT * FROM ( SELECT * FROM USER ORDER BY USER_CORD ) S. 解决办法:在子查 ...
- 连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的,
连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的, 2018-03-12 17:08:52.532DEBUG[localhost-startStop-1]o.s.beans.factor ...
- 关于使用CodeFirst,修改类或上下文时操作数据库报错解决方法
在操作已经创建好的数据库时,若是添加新的实体类或者修改原有数据库上下文,会报如下错误: The model backing the 'StudentDbContext' context has cha ...
随机推荐
- sql面向过程用法
sql可以看成是面向过程的编程语言.该语言中,有string.date.table这样的类型等等 一.操作表 sql相当于一个函数,输入是两个或多个表(A, B, ...) 求集合: 并集 union ...
- java基础之hashmap
Hashmap是一种非常常用的.应用广泛的数据类型,最近研究到相关的内容,就正好复习一下.网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论. 1.hashma ...
- idea修改jsp后不会自动编译和替换(转)
使用IntelliJ IDEA开发JavaWeb项目时,修改了JSP后刷新浏览器无法及时显示修改后的页面? 解决办法:tomcat配置中,On frame deactivation属性选择Update ...
- poj2649 数论
//Accepted 420K 16MS //考虑 0和n! does not divide // 1和0! divides #include <cstdio> #include < ...
- pod创建的工程找不到库
ld: library not found for -lAFNetworking app工程 和 Pod工程里面的所有库 Build Active Architecuture Only 所有库都设 ...
- META标签的NAME变量
META标签的NAME变量语法格式是: <META NAME=xxx CONTENT=xxxxxxxxxxxxxxxxxx> 其中xxx主要有下面几种参数: 1. Keywords(关键字 ...
- linux基础命令学习五(软件包管理、下载管理)
Linux 软件包管理 本文主要是记录下RedHat系列的软件包管理. 内容分为以下二个部分:二进制包的管理,源代码包的管理 一.二进制包的管理 1.1概念 主要有RPM和YUM这两种包管理. 两 ...
- PHP中的数组(二)常用数组处理函数
数组的相关处理函数 一.数组键/值操作有关的函数 1.array_values() 无论是关联的还是索引的返回的都是索引数组 <?php $lamp=array(&quo ...
- linux命令:ls
1.介绍: ls是linux日常操作中用的最多命令,是list的缩写,默认按名称排序列出当前目录和文件,ls --help可以查看帮助. 2.命令格式: ls [OPTION] [FILE] 3.命令 ...
- Oracle数据库中char, varchar, nvarchar的差异
1. char 固定长度,最长n个字符. 2. varchar 最大长度为n的可变字符串. (n为某一整数,不同数据库,最大长度n不同) char和varchar区别: ...