Debian系统 logind.conf 文件详解
首页 学习分享 精品应用 资源收藏 心情随笔 关于我们 登录
Debian系统 logind.conf 文件详解

本文最后更新于1月前,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

您阅读本篇文章共花了: 

一、logind.conf文件简介

logind.conf是systemd-logind服务的核心配置文件,主要用于管理系统登录会话与电源事件的行为控制。其具体用途如下:

‌1、电源管理功能配置‌

该文件定义了设备合盖、电源键触发时的系统响应策略,例如:

HandleLidSwitch:控制笔记本电脑合盖后的动作(如休眠、关机或忽略)‌

HandlePowerKey:设置电源键触发行为(如关机或重启)‌

‌2、会话管理参数设定‌

包含用户会话超时规则、多会话并发限制等登录相关策略,例如:

KillUserProcesses:控制用户退出后是否终止其进程‌

IdleAction:设置空闲状态下的默认操作‌

‌3、硬件资源分配规则‌

可配置特定硬件设备(如显卡、USB控制器)的访问权限分配逻辑,决定哪些用户或会话有权独占使用这些资源‌。

‌配置文件路径与优先级‌

主配置文件路径为/etc/systemd/logind.conf‌

扩展配置目录包括/usr/lib/systemd/*.conf.d/(系统级默认)和/etc/systemd/logind.conf.d/(管理员自定义),后者优先级更高‌。

二、文件路径及内容

文件路径:/etc/systemd/logind.conf

Login

1、#NAutoVTs=6

2、#ReserveVT=6

3、#KillUserProcesses=no

4、#KillOnlyUsers=

5、#KillExcludeUsers=root

6、#InhibitDelayMaxSec=5

7、UserStopDelaySec=10

8、#HandlePowerKey=reboot

9、#HandlePowerKeyLongPress=poweroff

10、#HandleSuspendKey=suspend

11、#HandleSuspendKeyLongPress=hibernate

12、#HandleHibernateKey=hibernate

13、#HandleHibernateKeyLongPress=ignore

14、HandleLidSwitch=ignore

15、HandleLidSwitchExternalPower=ignore

16、#HandleLidSwitchDocked=ignore

17、#PowerKeyIgnoreInhibited=no

18、#SuspendKeyIgnoreInhibited=no

19、#HibernateKeyIgnoreInhibited=no

20、#LidSwitchIgnoreInhibited=yes

21、#RebootKeyIgnoreInhibited=no

22、HoldoffTimeoutSec=30S

23、#IdleAction=ignore

24、#IdleActionSec=30min

25、#RuntimeDirectorySize=10%

26、#RuntimeDirectoryInodesMax=

27、#RemoveIPC=yes

28、#InhibitorsMax=8192

29、sessionsMax=8192

30、StopIdleSessionSec=infinity

三、参数注释详解

1、NAutoVTs=

必须设为一个正整数, 表示默认最多可以自动启动多少个虚拟终端。 当用户切换到一个先前未曾使用的虚拟终端时, 将根据该虚拟终端的名称自动从 autovt@.service 模版实例化一个 例如 autovt@tty4.service 这样的服务单元。 默认情况下,autovt@.service 是一个指向 getty@.service 的软连接。 换句话说,当用户切换到一个先前未曾使用的虚拟终端时,"login:"登录提示符是动态启动的。 因此,此选项实际上相当于设置了允许启动多少个 agetty 文本登录界面(与虚拟终端一一对应)。 如果某个虚拟终端已经被其他子系统(例如图形登录界面)占用, 那么将不会自动启动此虚拟终端。 注意,ReserveVT= 中的虚拟终端 总会被自动启动, 即使这些终端并不在 NAutoVTs= 的范围内。 默认值是"6"。若设为"0"则表示禁止自动启动任何虚拟终端, 也就是禁止自动从 autovt@.service 模版实例化。

2、ReserveVT=

必须设为一个表示终端编号的正整数, 表示无条件的为该终端从 autovt@.service 模版实例化一个服务单元(见上文)。 被此选项选中的虚拟终端将被无条件的标记为"忙碌"状态, 以确保不被任何其他子系统占用。 此选项可用于确保无论其他子系统占用了多少虚拟终端, 在特定编号的终端上总有一个文本界面的登录 agetty 可用。 默认值是"6", 也就是在 Alt-F6 上总有一个文本界面的"login:"登录提示符。 若设为"0"则表示禁止此特性。

3、KillUserProcesses=

接受一个布尔值。控制在用户退出登录会话时, 是否杀死该用户的进程。如果设为"yes", 那么与此会话对应的 scope 单元中所包含的所有进程都将被杀死。 如果设为"no",那么与此会话对应的 scope 单元将会被"遗弃", 并且其中包含的所有进程都将被保留(任由其自生自灭)。 默认值是 "yes" 。 参见下面的 KillOnlyUsers= 与 KillExcludeUsers= 选项。

根据 linger(逗留) 设置的不同,用户进程除了可以运行在会话中, 还可以运行在 user@.service 用户管理单元中。 这样就允许用户运行独立于登录会话的进程。参见 loginctl(1) 的 enable-linger 命令。

注意,设置 KillUserProcesses=yes 将破坏 screen(1) 与 tmux(1) 之类的工具(除非它们被移出了会话 scope 单元之外)。参见 systemd-run(1) 的例子。

4、KillOnlyUsers=

5、KillExcludeUsers=

设为一个空格分隔的用户名列表, 以影响 KillUserProcesses= 的效果: 若 KillOnlyUsers= 非空, 则表示 KillUserProcesses=yes 仅对列表内的用户有效。 若 KillExcludeUsers= 非空, 则表示 KillUserProcesses=yes 仅对列表外的用户有效。 KillOnlyUsers= 默认值为空, KillExcludeUsers= 默认值为 "root" , 并且 KillExcludeUsers= 的优先级比 KillOnlyUsers= 更高。 注意,若选项值为空则表示忽略此选项(相当于不存在此选项)。

6、InhibitDelayMaxSec=

当系统中存在"delay inhibitor"延迟锁时,关闭/休眠系统的请求将被临时延迟一段时间。 此选项可用于设置上述延迟的最大时长。 若超过这个时长之后,延迟锁依然未被释放,那么将执行关闭/休眠系统的动作。 可以使用下面的时间单位后缀:"ms", "s", "min", "h", "d" ,若仅设为一个正整数,那么单位是秒。 默认值是5秒。

7、UserStopDelaySec=

用户完全注销后,保持用户记录与 user@.service 服务实例的时长。 设为零表示当用户的最后一个会话结束时,立即结束该用户的 user@.service 服务实例。 设为非零表示当用户的最后一个会话结束时,在指定的等待时长之内,若该用户仍未再次登录,才会结束该用户的 user@.service 服务实例。 通过将此选项设为非零可以避免 user@.service 服务实例的频繁启动与停止,从而加快了登录/注销的速度。 特殊值 "infinity" 表示一旦用户首次登录,该用户的 user@.service 服务实例就将一直持续运行,直到系统关机。 默认值是 10s 。

8、HandlePowerKey=

10、HandleSuspendKey=

12、HandleHibernateKey=

14、HandleLidSwitch=,

15、HandleLidSwitchExternalPower=,

16、HandleLidSwitchDocked=

当 power(电源)/sleep(休眠)/lid(合上盖子) 事件发生时, 应该执行何种操作: "ignore"(无操作), "poweroff"(关闭系统并切断电源), "reboot"(重新启动), "halt"(关闭系统但不切断电源), "kexec"(调用内核"kexec"函数), "suspend"(休眠到内存), "hibernate"(休眠到硬盘), "hybrid-sleep"(同时休眠到内存与硬盘), "suspend-then-hibernate"(先休眠到内存超时后再休眠到硬盘), "lock"(锁屏) 。 注意, 只监视带有 "power-switch" 标签的 输入设备的 key(按下按钮)/lid(合上盖子) 事件。 如果主机插入了一个扩展坞(docking station) 或者连接了多个显示器, 那么"合上盖子"将执行 HandleLidSwitchDocked= 动作; 如果主机使用外部电源, 并且 HandleLidSwitchExternalPower= 不是默认值("ignore"), 那么"合上盖子"将执行 HandleLidSwitchExternalPower= 动作; 否则将执行 HandleLidSwitch= 动作。 下面是 各选项的默认值: HandlePowerKey=poweroff 、 HandleSuspendKey=suspend 、 HandleHibernateKey=hibernate 、 HandleLidSwitch=suspend 、 HandleLidSwitchExternalPower=ignore 、 HandleLidSwitchDocked=ignore

持有低级 "inhibitor"延迟锁 ("handle-power-key", "handle-suspend-key", "handle-hibernate-key", "handle-lid-switch") 的其他应用程序将会阻止 systemd-logind 处理系统的 power(电源)/sleep(休眠)/lid(合上盖子) 事件。 也就是说, systemd-logind 将不会对上述按钮/开关事件作出任何响应, 因此,一系列 Handle*= 设置也变得没有意义了。 图形化的桌面环境经常 利用这个机制来接管对休眠事件的处理。

17、PowerKeyIgnoreInhibited=

18、SuspendKeyIgnoreInhibited=

19、HibernateKeyIgnoreInhibited=

20、LidSwitchIgnoreInhibited=

设置 power(电源)/sleep(休眠)/lid(合上盖子) 事件所触发的 systemd-logind 操作(见上文)是否应该忽略高级 inhibitor 锁("shutdown", "sleep", "idle")。注意,无论如何设置这些参数, 前文提及的低级延迟锁("handle-power-key", "handle-suspend-key", "handle-hibernate-key", "handle-lid-switch") 都不会被忽略。

这些选项都只能接受布尔值。 "no" 表示遵守应用所持有的高级 inhibitor 锁, 也就是说,仅当所有的高级锁都失效以后才执行所触发的操作。 "yes" 表示无视高级 inhibitor 锁的存在, 立即无条件的执行所触发的操作。 下面是 各选项的默认值: PowerKeyIgnoreInhibited=no 、 SuspendKeyIgnoreInhibited=no 、 HibernateKeyIgnoreInhibited=no 、 LidSwitchIgnoreInhibited=yes 。

22、HoldoffTimeoutSec=

当开机/唤醒时间 尚未超出此处设置的时间长度时, systemd 将延迟响应合上盖子(lid)硬件事件。 为了能够正确检测可热插拔的外接显示器与扩展坞, 在刚开机之后的一段时间内忽略lid事件是非常有必要的。 若设为零,systemd 将会立即响应lid事件, 但这有可能在内核完成初始化所有热插拔设备之前。 只要你不在乎让 systemd 去管理在系统关闭时被插入或拔出的设备, 那么就可以设为零。 默认值是30秒。

23、IdleAction=

当系统持续处于空闲状态超过 IdleActionSec= 所设置的时间后, 应该执行何种操作: "ignore"(无操作), "poweroff"(关闭系统并切断电源), "reboot"(重新启动), "halt"(关闭系统但不切断电源), "kexec"(调用内核"kexec"函数), "suspend"(休眠到内存), "hibernate"(休眠到硬盘), "hybrid-sleep"(同时休眠到内存与硬盘), "suspend-then-hibernate"(先休眠到内存超时后再休眠到硬盘), "lock"(锁屏) 。 默认值是 "ignore"

注意,此功能依赖于用户会话能够正确的报告空闲状态。 执行此处设置的动作需要满足下列全部条件: (1)系统中不存在"idle inhibitor"锁(禁止进入空闲状态的锁) (2)所有会话都报告说它们正处于空闲状态,并且持续处于空闲状态超过了下文 IdleActionSec= 所设置的时间。

24、IdleActionSec=

当系统持续处于空闲状态超过此处设置的时长之后 将会自动执行 IdleAction= 设定的动作。 可以使用下面的时间单位后缀:"ms", "s", "min", "h", "d" ,若仅设为一个正整数,那么单位是秒。

25、RuntimeDirectorySize=

为每个已登录用户设置运行时目录 $XDG_RUNTIME_DIR 的最大尺寸。 若设为绝对大小, 则可以使用基于1024的字节后缀:K, M, G, T 。 若设为相对大小, 则可以设为一个以物理内存大小为基准的百分数(以 "%" 为后缀)。 默认值是 10% 。 注意,这里设置的值仅用于限制运行时目录尺寸的上限, 因为运行时目录位于内存中(tmpfs), 所以实际所占用的内存大小是随着目录内容的变化而变化的。

27、RemoveIPC=

当用户完全退出登录时(也就是退出最后一个登录会话时), 是否销毁所有属于该用户的 SysV 与 POSIX IPC 对象。 这些IPC对象包括:SysV 信号/共享内存/消息队列、POSIX 共享内存/消息队列。 默认值 "yes" 表示销毁,这样可以确保当用户完全退出登录之后,不会再占用任何IPC资源。 注意,无论如何设置此选项,root 用户的IPC对象永远不会被销毁。

28、InhibitorsMax=

控制最多允许同时存在多少个 inhibitor 锁。 默认值是 8192(8K)

29、SessionsMax=

控制最多允许同时管理多少个用户会话。默认值是 8192 。 根据PAM栈中 pam_systemd.so 模块的不同配置, 超出数量限制的登录会话可能会被直接拒绝、也可能会被允许登录但不被 systemd-logind 追踪。

上一篇:Debian系统笔记本盒盖不休眠教程
下一篇:冬之歌
验证码
评论留言 (0条)