得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

在 Debian12 上禁用自动睡眠

不知道为何最近使用老电脑的 debian 时总是下面类似的情况

1
2
3
4
5
6
7
8
9
10
11
12
$ ping 192.168.1.96
PING 192.168.1.2 (192.168.1.2): 56 data bytes
ping: sendto: Host is down
ping: sendto: Host is down
Request timeout for icmp_seq 0
ping: sendto: Host is down
Request timeout for icmp_seq 1
ping: sendto: Host is down
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
64 bytes from 192.168.1.2: icmp_seq=10 ttl=64 time=82.199 ms
64 bytes from 192.168.1.2: icmp_seq=11 ttl=64 time=96.991 ms

网上查资料,说是 debian12 默认开启了自动休眠,然后就是巴拉巴拉几个方案,方案倒是可以一试,就是无从缺人是不是 debian12 默认开启了该功能

翻找的多了,也有说是因为 debian 重启以后并不直接通过物理机没有登录,只是通过 ssh 和部署的服务使用

本文也只是记录一下找到的几个方案,并不好说是否一定能生效,目前尝试的是第一种方案,并且确实暂没有再遇到 ping 需要等待的情况了

方案 1

创建一个 /etc/systemd/sleep.conf.d/nosuspend.conf 文件,内容如下:

1
2
3
4
5
[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no

但是完整这些步骤后,似乎不需要重启什么服务

上面的配置内容适用于 Debian10 Buster 及更高版本

方案 2

  1. 编辑 /etc/systemd/logind.conf 文件
  2. 修改以下配置内容
1
2
3
4
#IdleAction=ignore
#IdleActionSec=30min
IdleAction=ignore
IdleActionSec=0
  1. 重新加载 systemd-logind 服务
1
$sudo systemctl restart systemd-logind

方案 3

1
$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

番外

这个方案虽然老旧,但是 mask 是什么作用?

systemctl mask 是 systemd 的一个命令,用于屏蔽服务,防止它被启动,无论是手动还是自动。它的主要作用是通过创建一个符号链接,将服务的单元文件指向 /dev/null,从而使其无法加载和启动

相比 disable,阻止服务的自动启动,但仍然可以手动启动,mask 是完全禁止启动

be slow to promise and quick to perform.