似乎有很多方法可以永久操纵 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"