V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
jasonyang9
V2EX  ›  Linux

sysctl 和 systemd

  •  
  •   jasonyang9 · 2019-07-26 10:49:08 +08:00 · 4143 次点击
    这是一个创建于 1947 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Linux 中,系统参数是由 sysctl,或用/proc/sys/虚拟文件系统来控制的,但在有 systemd 的情况下,又不完全是这样。

    有时 systemd 会覆盖 sysctl 的设定,比如 ulimit。

    网上搜 ulimit,大部分资料对 systemd 只字不提,只讲从 kernel,PAM 和 SHELL 这 3 个地方可以控制;

    但如果用了 systemd,对它管理的服务单元,必须创建xxxx.servic.d/目录,在其中保存.conf,内容包括:

    [Service]
    LimitNOFILE=MMMMMM:NNNNNN
    

    才行。

    所以我的问题是:有没有啥资料可以把这 2 个冤家的关系讲清楚的?

    6 条回复    2019-08-19 10:20:02 +08:00
    julyclyde
        1
    julyclyde  
       2019-07-26 12:49:13 +08:00
    首先,ulimit 不是 sysctl
    julyclyde
        2
    julyclyde  
       2019-07-26 12:50:37 +08:00
    你现在的认识是一种很经典的错误

    pam_limits.so 和 shell 的 ulimit 命令,控制的是 shell 的 rlimit
    而系统服务 *不应该* 在 shell 里启动,而应该是独立做好准备工作的
    rogwan
        3
    rogwan  
       2019-07-26 13:04:22 +08:00 via Android
    systemd 确实强,如果不摸索清楚就用,都知不到它到底是怎么控制的,容易掉坑,这也是部分人批评 systemd 过于复杂的原因,违背 Linux 的“ stupid ”原则。
    Sasasu
        4
    Sasasu  
       2019-07-26 13:19:37 +08:00
    systemd 控制的是 cgroup,不是整个系统的 ulimit
    regist
        5
    regist  
       2019-07-26 13:26:12 +08:00 via iPhone
    /etc/systemd/system.conf
    /etc/systemd/user.conf
    这是全局
    你也可以直接在各个服务的 unit files 中添加参数
    asilin
        6
    asilin  
       2019-08-19 10:20:02 +08:00   ❤️ 2
    sysctl 是控制内核参数的,和下面的都没有关系。


    systemd 是用来管理系统服务的(还有硬盘挂载、定时任务、会话管理等其他功能)
    pam 是用来控制用户会话的,包括用户的资源限制,也就是这里的 ulimit 的,还有变量控制、密码认证等

    systemd 并不会用到 pam 的 env、limits 等模块,所以平时用来控制资源的 /etc/security/limits.conf,控制环境变量的 /etc/environment 等文件,对于 systemd 的服务并不起作用

    不过 systemd 会通过 pam_systemd.so 模块将 PAM 中的会话注册到 user.slice 中并进行相应的操作,
    还有就是将会话中的进程放置到当前会话的 CGroup 控制组中,实现会话资源的统一管理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:12 · PVG 06:12 · LAX 14:12 · JFK 17:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.