如何从命令行临时禁用睡眠和休眠


10

只要需要满足预定条件,似乎可以通过多种方式永久地控制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

Answers:


10

在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
传递--runtimesystemctl将使掩码临时,在下次启动时重置。
sircolinton

3

您可以gsettings在脚本中使用以禁用电源设置的自动挂起,并再次恢复电源设置的默认行为。

这是一个简单的配置,它首先获取当前的睡眠超时,将其禁用,然后在执行某些任务后将其重新启用。

#!/bin/bash   

#get the current timeout for automatic suspend both for on battey power and when plugged in.
a=$(gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout)
b=$(gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout)


#Disable automatic suspend 
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 0

#Your task here
sleep 5

#Enable the automatic suspend
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout $a
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout $b

3

去年我花了几个小时进行备份,却遇到了完全相同的问题!

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

我仍然没有为它创建快照或deb的方法。但是,您可以暂时从此处从启动板下载程序

当前版本是稳定的,并且适用于从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 &

1

这是在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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.