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

sysctl 和 systemd

  •  
  •   jasonyang9 · 113 天前 · 1338 次点击
    这是一个创建于 113 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
        1
    julyclyde   113 天前
    首先,ulimit 不是 sysctl
        2
    julyclyde   113 天前
    你现在的认识是一种很经典的错误

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


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

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

    不过 systemd 会通过 pam_systemd.so 模块将 PAM 中的会话注册到 user.slice 中并进行相应的操作,
    还有就是将会话中的进程放置到当前会话的 CGroup 控制组中,实现会话资源的统一管理
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1320 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 00:07 · PVG 08:07 · LAX 16:07 · JFK 19:07
    ♥ Do have faith in what you're doing.