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

前言#

事情是这样的

今天想用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
原创作者: deali 转载于: https://www.cnblogs.com/deali/p/18986490
将旧笔记本电脑改装为服务器是一个实用且环保的选择,尤其适合小型项目、家庭网络或学习目的。以下是详细的步骤和建议: ### 1. **硬件准备** - **检查硬件状态**:确保笔记本电脑的硬件(如CPU、内存、硬盘)仍然能够支持服务器运行的需求。如果硬件老化严重,可以考虑升级部分组件,例如增加内存或更换固态硬盘(SSD)以提高性能[^2]。 - **外接存储设备**:如果内置硬盘容量不足,可以通过USB接口连接外部硬盘或使用网络存储(NAS)扩展存储空间。 ### 2. **操作系统选择** - **Linux发行版**:Linux服务器环境中最常用的操作系统之一,具有稳定性高、安全性强和资源占用低的特点。常见的Linux发行版包括Ubuntu Server、Debian、CentOS等。如果您希望节省资源并专注于服务器功能,可以选择无图形界面的版本。 - **Windows Server**:如果您更熟悉Windows环境,也可以安装Windows Server,但需要注意其对硬件资源的要求较高。 ### 3. **安装操作系统** - **制作启动盘**:使用另一台计算机下载所需的ISO镜像文件,并通过工具(如Rufus)创建可启动的USB驱动器。 - **设置BIOS/UEFI**:插入USB驱动器后,重启笔记本电脑并进入BIOS/UEFI设置界面(通常按F2、Del或其他键),将启动顺序调整为从USB设备启动。 - **安装过程**:按照屏幕提示完成操作系统的安装。在此过程中,可以选择自定义分区或让安装程序自动处理磁盘分区。 ### 4. **配置网络** - **静态IP地址**:为了方便访问服务器,建议为其分配一个静态IP地址。在Linux中,可以通过编辑`/etc/network/interfaces`文件或使用`netplan`配置文件来实现;在Windows Server中,则可以在网络适配器设置中手动指定IP地址。 - **端口转发**:如果您希望通过互联网访问该服务器,还需要在路由器上进行端口转发设置,将外部请求定向到服务器的本地IP地址。 ### 5. **安装必要的服务软件** 根据您的需求,安装相应的服务软件: - **Web服务器**:Apache或Nginx可用于搭建网站或Web应用。 - **数据库服务器**:MySQL或PostgreSQL适用于需要存储和管理数据的应用场景。 - **文件共享**:Samba(Linux)或Windows文件共享功能可以让其他设备访问服务器上的文件。 - **远程访问**:SSH(Linux)或Remote Desktop(Windows)允许您从其他设备远程控制服务器。 ### 6. **安全设置** - **防火墙配置**:启用并配置防火墙(如UFW在Linux或Windows Defender Firewall),仅开放必要的端口。 - **定期更新**:保持操作系统和所有软件的最新版本,以修复潜在的安全漏洞。 - **备份策略**:制定定期备份计划,防止数据丢失。您可以使用rsync(Linux)或Windows Backup等功能进行自动化备份。 ### 7. **电源管理和散热** - **电源管理**:由于服务器需要长时间运行,建议将电源管理模式设置为“高性能”或“始终开启”,避免因节能模式导致的服务中断。 - **散热措施**:确保笔记本电脑的散热系统正常工作,必要时可以添加额外的冷却设备(如散热垫)以延长硬件寿命。 ### 示例代码:在Ubuntu上安装Apache Web服务器 ```bash sudo apt update sudo apt install apache2 ``` 安装完成后,您可以通过浏览器访问服务器的IP地址来查看默认的Apache欢迎页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值