Solaris 上 /etc/system 与 /etc/sysctl.conf 与 /etc/security/limits.conf 中的文件描述符限制

Solaris 上 /etc/system 与 /etc/sysctl.conf 与 /etc/security/limits.conf 中的文件描述符限制

我先解释一下我的理解。

在 Solaris 10 中,rlim_fd_maxrlim_fd_cur/etc/system系统级别设置硬限制和软限制。

/etc/security/limits.conf设定限制login,对吗?因此,对于用户来说,它会覆盖/etc/system.如果 中未设置限制/etc/security/limits.conf,用户将获得 中的值/etc/system,对吧?

那么,这是/etc/sysctl.conf为了什么?

在我的 Solaris 10 上,我没有sysctl.conf, 或limits.conf。在这种情况下,如何对重启后保留的单个用户设置限制?除了设置它们之外还有其他机制吗profile

答案1

不再建议在 Solaris 10 及更高版本中使用参数rlim_fd_currlim_fd_maxin 。/etc/system应该使用资源控制process.max-file-descriptor来代替 System V 进程间通信。优点是不再需要重新启动服务器,您可以使用项目不影响其他进程。

然后,要更改项目的硬限制,user.root还需要设置权限级别 priv(硬限制),如下命令:

# projmod -s -K "process.max-file-descriptor=(priv,4096,deny)" user.root

要更改项目的软限制,user.other还需要设置权限级别,例如:

$ projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.other

可以在/etc/project文件中找到项目。

projadd这是(创建)和projmod(设置)的示例:

# useradd test
# projadd -c "Test" 'user.test'
# projmod -s -K "project.max-shm-memory=(privileged,6GB,deny)" 'user.test'
# projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.test
# cat /etc/project|grep -i test
user.test:101:Test:::process.max-file-descriptor=(basic,1024,deny);project.max-shm-memory=(privileged,6442450944,deny)
#

projadd并且projmod是持久的价值观。对于非持久值,您应该使用prctl命令。

例子:

# prctl -n project.max-shm-memory -v 8gb -r -i project default 
# prctl -n project.max-shm-memory -i project default 
project: 3: default 
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT 
project.max-shm-memory 
usage 8.49MB 
privileged 8.00GB - deny - 
system 16.0EB max deny - 

/etc/security/limits.conf/etc/sysctl.conf是 Linux 文件。

limits.conf在 PAM 模块的用户会话中设置系统资源限制pam_limits。 --> 这与projmod.

sysctl.confsysctl是运行时修改内核参数的文件。 --> 这与修改/etc/system.

如果用户没有限制,则limits.conf默认值取自: Kernel:init进程 Inherited: 父进程(厂商配置在/usr/lib/sysctl.d/) PAM: limits.conf(可以替换 Kernel 和 Inherited) 进程本身(可以替换 PAM、Kernel 和 Inherited, " getrlimit, setrlimit, prlimit- 获取/设置资源限制")。

limits.conf和的变化sysctl.conf是持久的。

要为单个用户设置限制,您必须编辑limits.conf文件。喜欢:

{account} soft as size (KB)
{account} hard as size (KB)

例子:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

修改 limit.conf 不需要重新启动,但新参数将仅应用于新会话。

如果您想修改正在运行的进程,您应该使用prlimit.喜欢:

prlimit --pid <pid> --<limit>=<soft>:<hard>

例子:

prlimit --pid 12345 --nofile=1024:2048

相关内容