如何从命令行挂起/休眠?


Answers:


312

传统上,ubuntu支持相当钝的暂停和休眠方法。两者都无法与其他应用程序很好地集成,有时甚至不能在某些计算机上运行。新方法不需要root用户,并通知所有监听电源事件的应用程序。

系统方法

从Ubuntu 16.04开始,systemctl必须使用call(请参阅Ubuntu 16.04中的Suspend命令

systemctl suspend

systemctl hibernate

新方法

有关使用dbus的信息,请参见Adam Paetznick在本页上的答案。理想情况下,您将创建~/bin/suspend使此操作易于使用的快捷方式/脚本。

要在ssh上使用,您应该修改Peter V.Mørch概述的policykit规则

旧方法

根据Ubuntu论坛,您可以使用以下命令:

pmi action suspend

pmi action hibernate

这要求您安装电源管理接口软件包(未测试)。

sudo apt-get install powermanagement-interface

我还找到了命令sudo pm-suspendsudo pm-hibernate可以在上网本上工作。


21
pm-suspend和pm-hibernate对我有用,这很容易。需要sudo但没关系。(之前找到了pmi的想法,但是安装了使用suspend的软件包是很糟糕的……)
user1034

1
请注意,您必须apt-get install powermanagement-interface运行pmi。
nealmcb 2012年

1
在11.10上,只有pm- *可以工作,并且还添加了powermanagament-interface
Omegafil 2012年

1
与我的ubuntu 12.10不兼容。之后apt-get install powermanagement-interface
somethis 2013年

1
新方法现在被打破,请参见unix.stackexchange.com/questions/153099/…–
ijk

188

gnome友好的方法是使用dbus。

dbus-send --system --print-reply \
    --dest="org.freedesktop.UPower" \
    /org/freedesktop/UPower \
    org.freedesktop.UPower.Suspend

与相比,此命令有两个优点pm-suspend

  1. 如果您在gnome中选择了该选项,它将锁定屏幕(在恢复时)。

  2. 它不需要root特权,因此很容易将其添加为键盘快捷键。

如注释中所述Suspend,在最后一行交换,以Hibernate创建一个休眠命令:

dbus-send --system --print-reply \
    --dest="org.freedesktop.UPower" \
    /org/freedesktop/UPower \
    org.freedesktop.UPower.Hibernate

如果进入休眠状态,则Error org.freedesktop.UPower.GeneralError: not authorized可能不允许您的用户进入休眠状态。编辑或创建/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla,使其包含以下部分:(源)

[Re-enable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

这已在UbuntuGnome 14.04上进行了测试。

注意:这基本上与qbi的答案相同,但已更新为可用于新版本的Ubuntu以及包括休眠的版本。


15
您的答案确实应该是第一位。这是要安装的非root用户无软件包的gnome方式。喜欢!
涡轮增压2012年

11
Hibernate,您只需将最后一行替换为org.freedesktop.UPower.Hibernate
Sheharyar,2013年

2
在我的13.10上确实有效。但是,屏幕不会在恢复时被锁定,即使在“安全和隐私”,“从挂起唤醒时需要我的密码” 激活。
andreas-h 2014年

3
不适用于我(Gnome 3.12,Ubuntu 14.04)。根据bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/…
Gui Ambros

4
挂起界面已移至登录状态;askubuntu.com/questions/652978
Khurshid Alam

58

英语

如果您想上床睡觉以收听自己喜欢的广播电台而使计算机在一小时内挂起,请打开终端并输入:

sudo bash -c "sleep 1h; pm-suspend"

您的计算机将在1小时内进入睡眠状态。当您醒来时,它将保留您打开的图像和所有内容。

您可以替换1h为所需的内容:h数小时,m数分钟,s数秒,d数天。

晚安!

法兰西

乌兹别克斯坦共和国电视台无线电广播电台,乌尔夫雷斯市电台和录像带报到:

sudo bash -c "sleep 1h; pm-suspend"

et votre ordinateur s'endormira dans une heure。Quand vous vousréveillerez,il auraconservéenmémoirevos应用程序外包。

Vous pouvez remplacer 1hpar que que vous voulez:h倒水,m倒数分钟,s倒数秒,倒数d

邦尼·努特!

西班牙文

您可以在无线电广播,多米尼加共和国的单身电台附近的计算机上查询和下载:

sudo bash -c "sleep 1h; pm-suspend"

和您在Quorármdormida en 1 hora一样。Cuando despiertes,所有的哈布兰·奎达多·阿比尔塔斯·图斯·伊马吉尼斯和托达斯·图斯·科萨斯。

Puedes reemplazar 1hpor lo que des des dees:hpara horas mspara minutos,dpara segundos ,paradías。

Buenas槽口!


那就是我要寻找的用例!AFIK pm- *可以在没有超级用户权限的情况下运行
ruX 2014年

31

对于Ubuntu 12.04 LTSUbuntu 13.04

要进入休眠状态:

sudo pm-hibernate

要暂停:

sudo pm-suspend

“ sudo pm-suspend”不适用于薄荷13伴侣:(
rsjethani 2012年

是的,我认为该软件包尚未安装。在突触中寻找那些包装。
rɑːdʒɑ

2
这种方法的缺点是,如果您使用的是GUI,则pm-suspend不会阻止您的会话,因为这可能是不安全的。
劳尔·萨利纳斯-蒙塔古多

1
它也适用于ubuntu 15.10。
Searene 2015年

1
在14.04
lts

22

您可以使用该文件/sys/power/state来执行此操作。首先找出支持哪些状态:

user@linux:_> cat /sys/power/state
standby mem disk

root@linux:~> echo -n mem > /sys/power/state  # suspend to ram
root@linux:~> echo -n disk > /sys/power/state  # suspend to disk

或通过dbus:

#暂停dbus-send --session --dest = org.gnome.PowerManager \ --type = method_call --print-reply --reply-timeout = 2000 \ / org / gnome / PowerManager org.gnome.PowerManager.Suspend#休眠dbus发送--session --dest = org.gnome.PowerManager \ --type = method_call --print-reply --reply-timeout = 2000 \ / org / gnome / PowerManager org.gnome.PowerManager.Hibernate

根据启动板中的此项,删除了上面的界面。因此它在Ubuntu中不再起作用。


第一个主意给了我:“重击:回声:写入错误:无效的参数” Dbus的主意给出了输出:“错误org.freedesktop.DBus.Error.UnknownMethod:接口” org.gnome.PowerManager“上带有签名”“的方法” Suspend“不存在”
user1034

我在/sys/power/state-thing上添加了一个小解释。此外,dbus方法已从Ubuntu中删除,因此它将不再起作用。
qbi 2010年

$ sudo echo -n mem > /sys/power/state-– bash: /sys/power/state: Permission denied
Hubro

3
这很好。对于使用sudo时对此方法有疑问的人,“ pipe to file”(又名“>)正在您当前的shell中运行,因此在执行echo时它不会获得超级用户特权。您需要先使用sudo -i管道,或使用sudo tee类似的管道:echo mem | sudo tee /sys/power/state
RandomInsano 2014年

12

要从命令行(或键盘快捷键)关闭系统(14.04),请使用:

dbus-send --system --print-reply --dest="org.freedesktop.login1" /org/freedesktop/login1 org.freedesktop.login1.Manager.PowerOff boolean:true

我通过玩gdbus来发现这一点,它可以列出可用的接口:

列出总线上可用的服务:

dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames

查找方法:

gdbus introspect --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --recurse

12

由于15.04 systemD是标准的初始化系统,因此有一个新命令要使用:

systemctl suspend

我正在使用Xubuntu 15.04。该命令systemctl suspend确实会挂起计算机,但是即使我已选中“设置”->“电源管理器”->“安全性”中的“系统进入睡眠状态时锁定屏幕”复选框,也不会导致屏幕锁定。有人知道为什么吗?
Teemu Leisti

我已经升级到Xubuntu 16.04。该命令systemctl suspend仍然挂起计算机。现在,仅当且仅当选中“设置”->“电源管理器”->“安全性”中的“系统进入睡眠状态时锁定屏幕”复选框时,它才会导致屏幕锁定。
Teemu Leisti

8

亚当·帕兹尼克(Adam Paetznick)的dbus发送答案并未像我所想的那样清晰。即使将gnome-power-manager设置为在唤醒时锁定屏幕,机器也会解锁并自动唤醒。我希望屏幕在唤醒时被锁定,并发现以下操作可以做到:

$ gnome-screensaver-command --lock && pmi action hibernate

我想这不取决于gnome配置,但是我还没有测试过。


真好 或者xscreensaver-command --lock视情况而定。
phyzome

3

新介面

…适用于15.10 Wily,可能适用于Utopic和Vivid。

dbus-send --print-reply --system                         \
    --dest=org.freedesktop.login1                        \
    /org/freedesktop/login1                              \
    org.freedesktop.login1.Manager.Suspend boolean:true

有用的是,与pm-suspend命令不同,它不需要sudo 。


我的带Debian / Gnome的XPS 13 9350在关闭盖子时出现了挂起/休眠问题。运行此命令(以及等同于休眠的命令)后,它成功进入了暂停(休眠)状态,现在按预期方式关闭和打开盖子!
VictorSchröder'16

1

这是通过ssh将远程计算机置于备用状态的方法:

ssh -t 192.168.1.4'sudo nohup&> / dev / null bash -c“(sleep 1; echo -n mem> / sys / power / state)&”'
x@192.168.1.4的密码: 
x的[sudo]密码: 
与192.168.1.4的连接已关闭。

/ sys / power / state可在Ubuntu 13.10中使用。pmi给出Dbus错误。


0

就个人而言,我一直在尝试pmi方法。但是,当我尝试此操作时,出现错误消息:Error org.freedesktop.DBus.Error.Spawn.ChildExited: Launch helper exited with unknown return code 1。但是,此错误报告第3条注释中有一个变通办法,这似乎对我有用(我正在使用Ubuntu 13.03)。


虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
fossfreedom

0

对于那些像我一样仍然在KDE / Ubuntu 14.04系统上工作的人的更新。锁定使用qdbus,并暂停使用dbus。完整命令:

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

要休眠,即暂停到硬盘而不是RAM,请在命令末尾将“暂停”替换为“休眠”。

xscreensaver-command -lock如果仅在屏幕保护程序正在运行的情况下为“ -lock”选项仅键入1个连字符,则仅锁定屏幕而不暂停屏幕将起作用。其实不是一个非常有用的命令。使用起来i3lock比较容易,但是您将不会像使用时那样获得简洁的登录对话框来重新工作qdbus


0

以下内容适用于16.04(使用Gnome桌面):

gnome-screensaver-command --lock && compsleep

我还通过Gnome设置面板将其作为自定义键盘快捷方式安装为键“ Shift-Super-X”。

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.