如何在挂起时启用同步?

如何在挂起时启用同步?

我的电脑运行 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 单元文件来执行相同的操作。

相关内容