echo mem > /sys/power/state 而不是 systemctl suspend 是一个不错的选择吗?

echo mem > /sys/power/state 而不是 systemctl suspend 是一个不错的选择吗?

我正在使用内核运行 Archlinux 5.7.0-arch1-1 (linux@archlinux),从 5.4ish 内核开始,systemd 需要大约 10 秒才能挂起我的笔记本电脑。以下是以下问题systemctl suspend

  1. 立即关闭网络管理器。
  2. 大约 10 秒内不执行任何操作。

然后它挂起,但是当它醒来时:

  1. 网络管理器需要很长时间才能扫描并连接到 wifi 网络。

解决方案:

如果我这样做# echo mem > /sys/power/state,它会立即挂起,没有任何网络管理器问题。它的工作速度非常快。


但我不确定为什么systemctl suspend需要这么长时间,但echo mem > /sys/power/state根本不需要时间。

我读过了但仍然不确定直接使用 echo 命令而不是 systemd 的效果,说实话,我有点担心如果systemctl suspend我稍后这样做会丢失数据(如果将任何未写入的数据刷新到 IO 设备)。


系统详情

cat /proc/version

Linux version 5.7.0-arch1-1 (linux@archlinux) (gcc version 10.1.0 (GCC), GNU ld (GNU Binutils) 2.34.0) #1 SMP PREEMPT Mon, 01 Jun 2020 22:54:03 +0000

free -h

              total        used        free      shared  buff/cache   available
Mem:          3.7Gi       1.4Gi       1.4Gi       274Mi       910Mi       1.8Gi
Swap:         4.0Gi          0B       4.0Gi

cat /proc/swaps

Filename                Type        Size    Used    Priority
/dev/zram0              partition   4194300 0       -2

频繁运行echo命令来暂停系统是一个好的选择吗?

答案1

我认为主要问题是丢失数据。如果您sync首先运行,磁盘应该执行任何剩余的 IO 操作,并且数据丢失不应该成为问题。可能有一些应用程序感到困惑,或者系统服务被通知计算机已进入睡眠状态,但我无法想象运行sync然后修改/sys/power/state.只要你的机器不是服务器,并且如果它出现异常行为你不介意重新启动它,我认为应该没问题。不过,我总是先跑sync

相关内容