ulimit设置不生效?

您所在的位置:网站首页 ulimit设置所有用户生效 ulimit设置不生效?

ulimit设置不生效?

2023-08-09 15:23| 来源: 网络整理| 查看: 265

 查看 ulimit -a 咿呀没有生效?这是为什么 的确是设置了?

完美解析下 这个系统命令,对于系统的优化如虎添翼。

ulimit命令

功能说明:控制shell程序的资源。 语  法:ulimit [-aHS][-c ][-d ][-f ][-m ][-n ][-p ][-s ][-t ][-u ][-v ] 补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。 参  数: -a  显示目前资源限制的设定。 -c  设定core文件的最大值,单位为区块。 -d  程序数据节区的最大值,单位为KB。 -f  shell所能建立的最大文件,单位为区块。 -H  设定资源的硬性限制,也就是管理员所设下的限制。 -m  指定可使用内存的上限,单位为KB。 -n  指定同一时间最多可开启的文件数。 -p  指定管道缓冲区的大小,单位512字节。 -s  指定堆叠的上限,单位为KB。 -S  设定资源的弹性限制。 -t  指定CPU使用时间的上限,单位为秒。 -u  用户最多可开启的程序数目。 -v  指定可使用的虚拟内存上限,单位为KB。

-------------------------------------------------------------------------------------------

-a 列出所有当前资源极限。 -c 以 512 字节块为单位,指定核心转储的大小。 -d 以 K 字节为单位指定数据区域的大小。 -f 使用 Limit 参数时设定文件大小极限(以块计),或者在未指定参数时报告文件大小极限。缺省值为 -f 标志。 -H 指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限。 -m 以 K 字节为单位指定物理存储器的大小。 -n 指定一个进程可以拥有的文件描述符的数量的极限。 -s 以 K 字节为单位指定堆栈的大小。 -S 指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果 -H 和 -S 标志均未指定,极限适用于以上二者。 -t 指定每个进程所使用的秒数。

参数看完了说下原理 :

 ulimit 分为软性和硬性。通过 ulimit 命令,用户可将软极限更改到硬极限的最大设置值。要更改资源硬极限,必须拥有 root 用户权限。

很多系统不包括以上一种或数种极限。特定资源的极限在指定 Limit 参数时设定。Limit 参数的值可以是每个资源中指定单元中的数字,或者为值 unlimited。要将特定的 ulimit 设置为 unlimited,可使用词 unlimited(无限制)。

 vim /etc/security/limits.conf  这个文件默认 是系统的硬性设置。

ulimit -Ha 就是硬性的结果.

ulimit -a  就是软的.

root 也有自己的软限制的。

省略 Limit 参数时,将会打印出当前资源极限。除非用户指定 -H 标志,否则打印出软极限。当用户指定一个以上资源时,极限名称和单元在值之前打印。如果未给予选项,则假定带有了 -f 标志。

由于 ulimit 命令影响当前 shell 环境,所以它将作为 shell 常规内置命令提供。如果在独立的命令执行环境中调用该命令,则不影响调用者环境的文件大小极限。以下示例中正是这种情况:

nohup ulimit -f 10000 env ulimit 10000

一旦通过进程减少了硬极限,若无 root 特权则无法增加,即使返回到原值也不可能。所以普通用户还是设置S  就行了。

 

下面说下使用:

Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况, 设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个: ulimit -u 10000 对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言, 最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。 ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024 其他建议设置成无限制(unlimited)的一些重要设置是: 数据段长度:ulimit -d unlimited 最大内存大小:ulimit -m unlimited 堆栈大小:ulimit -s unlimited CPU 时间:ulimit -t unlimited 虚拟内存:ulimit -v unlimited

暂时地,适用于通过 ulimit 命令登录 shell 会话期间。 永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:

1)、解除 Linux 系统的最大进程数和最大文件打开数限制: vi /etc/security/limits.conf # 添加如下的行 * soft noproc 11000 * hard noproc 11000 * soft nofile 4100 * hard nofile 4100

说明:* 代表针对所有用户 noproc 是代表最大进程数 nofile 是代表最大文件打开数 2)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制: a、vi /etc/ssh/sshd_config 把 UserLogin 的值改为 yes,并把 # 注释去掉 b、重启 sshd 服务: /etc/init.d/sshd restart 3)、修改所有 linux 用户的环境变量文件: vi /etc/profile ulimit -u 10000 ulimit -n 4096 ulimit -d unlimited ulimit -m unlimited ulimit -s unlimited ulimit -t unlimited ulimit -v unlimited  

*****写到这里你应该明白 你为什么没生效了么?首相你 登入手动执行是当前shell 环境的设置,想要生效 就要 写了每个用户的加载的环境变量文件:/etc/profil

如果你单独对某个用户设置 就要在他自己的 环境变量文件下:

 vim /home/用户/.bash_profile  

因为 用户环境变量的读取顺序 先加载全局文件/etc/profil  在加载~/.bash_profile  如果没有~/.bash_profile   在找 ~/.bash_login  ~/.profeil

当然 手动写入变量文件后要 source 下 。这样能够肯定就生效了。

如果/etc/profil 和~/.bash_profile  当然 ~/.bash_profile  优先级高。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3