如何通过命令行暂时禁用睡眠和休眠模式

如何通过命令行暂时禁用睡眠和休眠模式

似乎有很多方法可以永久操纵 Ubuntu 的设置以在需要时进入睡眠状态,只要满足预定条件即可。但是,这些是更永久的解决方案,没有考虑到可能需要暂时放弃标准策略的罕见任务。我遇到的问题是,我有一个运行时间很长的脚本来执行一些备份,并且我不希望计算机在该特定进程运行时进入睡眠或休眠状态,这通常需要 30-50 分钟。因此,是否有一个命令可以包含到我的备份脚本中,以防止系统在备份脚本运行时进入休眠/睡眠状态,并且是否还有一个命令可以在备份完成后恢复正常的默认电源策略?

就像是

#!/usr/bin/bash
#disable normal powerpolicy
disable-power-policies
backup /dev/sda /dev/sdb /dev/fioa /dev/fiob
#enable power policies.
enable-power-policies

答案1

在 Ubuntu 16.04 LTS 上,我成功使用以下命令禁用挂起:

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

重新启用它:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

答案2

暂时最方便的方法是使用systemd-inhibit

systemd-inhibit CMD [...]

无需额外选项,将在暂时禁用空闲检测(可能会自动挂起/休眠机器)、显式挂起/休眠(例如,您意外按下了键盘上的睡眠键)和关机命令时systemd-inhibit执行。CMD

您可以使用它来调用您的备份脚本,如下所示:

systemd-inhibit ./my-backup-task.sh

答案3

去年我遇到了同样的问题,备份花了几个小时!

您可以尝试 Keep.Awakehttps://launchpad.net/keep.awake 它可以监控 CPU 负载、网络流量和用户活动的最低阈值。

我还没有为它创建一个 snap 或 deb。不过暂时你可以从 Launchpad 下载该程序这里

当前版本很稳定,适用于从 14.04 到 16.04 的所有 Ubuntu 版本。不过,我会不断改进它,并添加新功能。

它的工作方式与正确的命令类似。输入 --help 可查看可执行操作的完整列表。下面的示例只是其中几个:

./keepawake.py --help

以交互方式运行:

./keepawake.py

要作为后台服务运行:

nohup ./keepawake.py -r > /dev/null 2>&1 &

作为后台服务运行,并在确定用户处于空闲状态之前将 15 分钟(900 秒)设置为用户活动空闲时间:

nohup ./keepawake.py -u 900 -r > /dev/null 2>&1 &

要作为后台服务运行并将最低 CPU 负载设置为 13%:

nohup ./keepawake.py -c 13 -r > /dev/null 2>&1 &

作为后台服务运行并将最小网络流量设置为 5KB(5120 字节):

nohup ./keepawake.py -s 5120 -r > /dev/null 2>&1 &

要一次性运行上述所有三个设置(网络、CPU、用户空闲):

nohup ./keepawake.py -s 5120 -c 13 -u 900 -r > /dev/null 2>&1 &

答案4

以下是如何在 Xfce 中执行此操作。(感谢 g_p 的回答,这让我开始着手做这件事。)

#!/bin/bash

# Grab current sleep timeout on battery and ac
a=$(xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac)
b=$(xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-battery)

# Set sleep to never on battery and ac
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 14
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-battery -s 14

# Your task here
sleep 5

# Reset sleep to what it was before on battery and ac
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s "$a"
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-battery -s "$b"

相关内容