登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
小心误关了NAS服务器!修改Linux的电源键功能 ...
小心误关了NAS服务器!修改Linux的电源键功能
[ 复制链接 ]
乙荒
2025-7-16 00:07:16
前言
事情是这样的
今天想用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=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空闲会话保持多久之后自动终止(默认不终止)。
参考资料
systemd-logind.service - logind服务官方文档
logind.conf.d(5) - 支持通过 drop-in 文件扩展 logind 配置
Inhibitor Locks - 控制程序如何暂时禁止系统挂起/关机等行为(比如视频播放时不让休眠)
也可以在系统上直接用 man 命令看
man logind.conf
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
乙荒
2025-7-16 00:07:16
关注
0
粉丝关注
14
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
凶契帽
9990
处匈跑
9990
4
黎瑞芝
9990
5
杭环
9988
6
猷咎
9988
7
鲫疹
9988
8
接快背
9988
9
里豳朝
9988
10
氛疵
9988
查看更多