LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

小心误关了NAS服务器!修改Linux的电源键功能

freeflydom
2025年10月13日 9:8 本文热度 200

前言#

事情是这样的

今天想用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

扩展

自定义脚本

如果想要让按电源键触发自定义脚本,可以这样操作:

  1. 设置 HandlePowerKey=ignore,避免 systemd 接管。
  2. 使用 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=6systemd-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空闲会话保持多久之后自动终止(默认不终止)。

参考资料

也可以在系统上直接用 man 命令看

man logind.conf

作者:DealiAxy

出处:https://www.cnblogs.com/deali/p/18986490


该文章在 2025/10/13 9:08:40 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved