小心误关了NAS服务器!修改Linux的电源键功能
NAS居然离线关机了?电源键被傻逼系统接管了。改改`logind.conf`让这玩意忽略电源键,省得误操作重启关机。谁用谁知道,别真当NAS是玩具。
目录9 个章节
前言
事情是这样的
今天想用NAS上的服务突然发现NAS离线了
我看了下原来是关机了
很奇怪,这几天也没断电啊…
我又去分析了系统日志
注意到了关机前的这段日志
Jul 13 23:24:33 pve systemd-logind[1062]: Power key pressed short.
Jul 13 23:24:33 pve systemd-logind[1062]: Powering off...
Jul 13 23:24:33 pve systemd-logind[1062]: System is powering down.
Jul 13 23:24:33 pve systemd[1]: 104.scope: Deactivated successfully.
原来是不小心按了电源键
那这不行啊,NAS可不能一不小心就关机了
修改电源键功能
在 Linux(包括 PVE)中,电源键的行为是由 systemd-logind 控制的,你不仅可以禁用它,还能改成其他操作,比如:挂起(suspend)、休眠(hibernate)、锁屏、忽略(ignore)等。
编辑 logind 配置文件
打开配置文件:
sudo nano /etc/systemd/logind.conf
找到这行(如果没有就添加):
HandlePowerKey=poweroff
然后改成想要的行为,比如:
| 选项 | 行为说明 |
|---|---|
ignore | 忽略按键(推荐用于NAS) |
poweroff | 关机(默认) |
reboot | 重启 |
halt | 关机但不切断电源 |
kexec | 快速重启 |
suspend | 挂起(休眠到RAM) |
hibernate | 休眠(保存状态到磁盘) |
hybrid-sleep | 挂起+休眠 |
lock | 锁屏(可能需要桌面环境支持) |
重启 logind 服务以生效
sudo systemctl restart systemd-logind
扩展
自定义脚本
如果想要让按电源键触发自定义脚本,可以这样操作:
- 设置
HandlePowerKey=ignore,避免 systemd 接管。 - 使用
acpid监听/etc/acpi/events/powerbtn,触发你自己的脚本。
对于大多数 PVE 用户,把 power key 设置为 ignore 是最稳妥的方案,可以避免误关机、误触等麻烦。
其他设置
如果是拿笔记本做服务器的话,还可以配置合盖功能什么的
# /etc/systemd/logind.conf
HandlePowerKey=ignore
HandleRebootKey=ignore
HandleSuspendKey=ignore
HandleLidSwitch=ignore # 如果有笔记本机箱盖
HandleLidSwitchDocked=ignore
配置项速查表
以下是 /etc/systemd/logind.conf 文件里的配置说明
| 配置项 | 含义说明 |
|---|---|
NAutoVTs=6 | 自动生成的虚拟终端(tty)的数量。默认系统会生成 /dev/tty1 到 /dev/tty6。 |
ReserveVT=6 | systemd-reserved 的虚拟终端编号(用于图形界面切换或紧急使用)。 |
KillUserProcesses=no | 用户退出登录后是否强制终止其所有进程。 |
KillOnlyUsers= | 仅对这些用户启用 KillUserProcesses 行为(白名单控制)。 |
KillExcludeUsers=root | 排除哪些用户不受 KillUserProcesses 控制(默认排除 root)。 |
InhibitDelayMaxSec=5 | 在被抑制的关机/挂起行为上,等待的最长时间(秒)。 |
UserStopDelaySec=10 | 用户注销后等待多长时间再真正终止 session。 |
HandlePowerKey=poweroff | 按下电源键时的操作(默认是关机)。 |
HandlePowerKeyLongPress=ignore | 长按电源键时的操作(默认是忽略)。 |
HandleRebootKey=reboot | 按下“重启按钮”时的操作。 |
HandleRebootKeyLongPress=poweroff | 长按“重启按钮”时的操作。 |
HandleSuspendKey=suspend | 按下挂起键时的操作(通常是笔记本或某些键盘上的 Sleep 键)。 |
HandleSuspendKeyLongPress=hibernate | 长按挂起键时的操作。 |
HandleHibernateKey=hibernate | 按下休眠键时的操作。 |
HandleHibernateKeyLongPress=ignore | 长按休眠键时的操作。 |
HandleLidSwitch=suspend | 合上笔记本盖子时的操作(默认是挂起)。 |
HandleLidSwitchExternalPower=suspend | 笔记本连接外部电源时合盖的操作。 |
HandleLidSwitchDocked=ignore | 笔记本插入扩展坞时合盖的操作(默认忽略)。 |
PowerKeyIgnoreInhibited=no | 是否忽略用户程序对电源键操作的抑制(inhibit)。 |
SuspendKeyIgnoreInhibited=no | 是否忽略程序对挂起键的抑制。 |
HibernateKeyIgnoreInhibited=no | 是否忽略程序对休眠键的抑制。 |
LidSwitchIgnoreInhibited=yes | 是否忽略程序对合盖操作的抑制(通常设置为 yes)。 |
RebootKeyIgnoreInhibited=no | 是否忽略程序对重启键的抑制。 |
HoldoffTimeoutSec=30s | 防抖动保护:相邻两个事件之间的最小时间间隔。 |
IdleAction=ignore | 空闲太久之后的操作(默认忽略)。 |
IdleActionSec=30min | 判断空闲的时间(配合 IdleAction 使用)。 |
RuntimeDirectorySize=10% | 每个用户的 /run/user/UID 目录可使用的最大空间(相对于内存总量)。 |
RuntimeDirectoryInodesMax= | 每个用户的 /run/user/UID 可使用的最大 inode 数(未设置即不限)。 |
RemoveIPC=yes | 用户退出登录后是否清除其 IPC(消息队列、信号量、共享内存)。 |
InhibitorsMax=8192 | 最大支持的 inhibit 锁数量(用于限制暂停/关机等)。 |
SessionsMax=8192 | 最大支持同时活跃的会话数。 |
StopIdleSessionSec=infinity | 空闲会话保持多久之后自动终止(默认不终止)。 |
参考资料
- systemd-logind.service - logind服务官方文档
- logind.conf.d(5) - 支持通过 drop-in 文件扩展 logind 配置
- Inhibitor Locks - 控制程序如何暂时禁止系统挂起/关机等行为(比如视频播放时不让休眠)
也可以在系统上直接用 man 命令看
man logind.conf
_EOF_
小心误关了NAS服务器!修改Linux的电源键功能
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
Debian8-stable-升级Python版本到3-6
前言 最近把一个Python项目部署到服务器上,然而服务器上的Python版本实在是太旧了,于是着手进行更新。 互联网上搜索到的方法都是下载Python3.6的代码之后手动编译,然而在服务器上编译安装出了点问题,于是想到了Ubuntu的ppa方式,debian和Ubuntu本属同源,理论上Ubuntu的ppa,debian也是可以用的。 操作步骤如下: 添加软件源 add-apt-reposito
2025-10-27 · 系统配置 · 约 1 分钟
内存不够用?在Linux上使用swapfile配置交换空间
前言 几个月前我还兴高采烈写了篇文章说给笔记本升级了内存配置,从乞丐版的4G一跃成为16G高富帅,然而,这几个月来我备受电脑死机的折磨,我现在有理由怀疑我可能买了假的内存条,于是没有办法,只能换回原厂的4G内存条,~~(然后准备赚部台式机)~~,问题不大。 换上4G内存条之后效果显著,只开了一个谷歌浏览器,内存占用就已经到了80%了,JB家的IDE是决计不敢再用了,可是这样还是难以满足系统对内存空
2025-10-27 · 系统配置 · 约 1 分钟
Nginx配置http跳转https-强制https访问
前言 最近上线了好几个项目,同时也申请了相应的SSL证书,不过发现了一个问题,用户在浏览器直接输入域名的时候,浏览器默认访问的是http站点,然而我们的网站只支持https访问,所以就访问不了咯。 其实可以在nginx全局配置里面把所有访问重定向到https,不过服务器有些站点是提供http服务的,所以只能每个站点分别配置。 根据搜索引擎找到的资料,本文总结了三种配置方法,有需要的朋友可以选择中意
2025-10-27 · 系统配置 · 约 1 分钟
服务器时间漂移,如何开启Linux NTP自动同步
本文记录了作者在服务器运维中发现时间漂移问题,并通过启用NTP同步、使用Chrony等工具进行排查与解决的全过程。文章强调了NTP同步的重要性,介绍了排查思路和高效工具的使用,以及如何同步硬件时钟(RTC),为服务器时间精准同步提供了解决方案。
2025-10-27 · 系统配置 · 约 1 分钟
讨论
共 0 条加载评论中…