我的电脑运行 Linux Mint 时遇到一个奇怪的问题:每隔一段时间我的电脑就无法从睡眠状态中唤醒。长话短说——我想我明白出了什么问题。有点。至少我知道如何解决它。也有点
由于某种我不明白的原因,当我在sync
暂停电脑之前这样做时,它总是会醒来。因此,当我现在想暂停我的电脑时,我在终端中输入:
sudo sh -c "sync && pm-suspend"
就像我说的,它确实有效(我检查了 100 多次 - 如果没有的话,sync
我的电脑将不会在大约 15 个睡眠恢复周期后醒来,所以 100 左右对我来说就足够了),但是当我暂停我的电脑时这样我的电脑需要输入密码(因为pm-suspend
需要root权限),而且它也不能自动暂停(一定时间后我的电脑会自动暂停,所以不会浪费电力)。所以现在我的问题是 - 如何让电脑sync
在挂起之前自动执行操作?
我尝试了我能想到的最简单的解决方案 - 即:在我的.bashrc
文件中添加一个简单的别名(当然还有根文件)。所以我在文件末尾添加了这个命令:
alias pm-suspend='sync && pm-suspend'
但这不起作用。我查了一下,好像我没有采取任何措施来解决这个问题。
因此,我在互联网上进行了挖掘,发现了一些有趣的东西。事实证明,曾经有一段时间,挂起sync
是自动的,但在 Linux 内核中它是可选的。还,有一个文件控制是否sync
调用该命令。我不确定如何称呼这些网站(文档?),但这是第二个链接的引用:
/sys/power/sync_on_suspend
Description:
This file controls whether or not the kernel will sync()
filesystems during system suspend (after freezing user space
and before suspending devices).
Writing a "1" to this file enables the sync() and writing a
"0" disables it. Reads from the file return the current value.
The default is "1" but can be configured with the build-time
config flag "SUSPEND_SKIP_SYNC".
在这方面我有点菜鸟,但如果我理解正确的话,有一个编译标志“SUSPEND_SKIP_SYNC”,但它只能在手动编译内核时设置。我对吗?另外,它提到的文件 - 嗯,它不在我的系统中。我尝试手动创建它,但我不能,如果我理解正确的话,你甚至不应该能够在/sys
.这也是对的吗?如果是这样,那么我如何启用自动sync
挂起功能?
所以,现在我停下来了。我真的不知道下一步该做什么,该检查什么。我不认为自己在 Linux 和 Unix 方面经验丰富且知识渊博,所以我恳请您帮助我。提前致谢!
答案1
不,您引用的文本告诉您,如果您写入 a 1
,/sys/power/sync_on_suspend
那么它将在挂起时启用同步,而无需重新编译内核。这就像以 root 身份运行以下命令一样简单:
echo 1 > /sys/power/sync_on_suspend
或者,作为具有访问权限的非 root 用户sudo
:
echo 1 | sudo tee /sys/power/sync_on_suspend > /dev/null
有很多方法可以将其设置为在启动时自动发生,包括编写 shell 脚本以在启动时运行,或编写 systemd 单元文件来执行相同的操作。