Linux命令:将笔记本电脑/上网本置于休眠/挂起模式

时间:2020-01-09 10:41:22  来源:igfitidea点击:

如何在Linux操作系统下从bash shell命令行挂起或休眠?
如何在不使用其他软件的情况下使用命令行挂起或休眠我的Ubuntu Dell笔记本电脑?
您可以在Linux下使用以下命令来挂起或休眠Linux系统:

  • systemctlsuspend命令在Linux上使用systemd从命令行挂起/休眠。
  • pm-suspend命令在挂起期间,大多数设备都将关闭,并且系统状态将保存在RAM中。在这种状态下,系统仍然需要电源。大多数现代系统需要3到5秒钟才能进入和退出挂起状态,大多数笔记本电脑在耗尽电池电量之前可以停留在挂起模式1到3天。
  • pm-hibernate命令在休眠期间,系统已完全关闭电源,并且系统状态已保存到磁盘。系统不需要电源,并且可以无限期地处于休眠模式。大多数现代系统需要15到45秒才能进入和退出休眠状态,而当您拥有更多内存时,进入和退出休眠状态的时间会更长。
  • pm-suspend-hybrid命令Hybrid-suspend是系统执行其需要休眠的所有过程的过程,但是挂起而不是关闭。这意味着,如果您没有断电,您的计算机可以比正常休眠更快地唤醒,并且即使断电也可以恢复。

上面的命令是名为pm-utils的软件包的一部分。
它是RHEL,Fedora,CentOS,Red Hat Enterprise Linux,Debian,Ubuntu和其他Linux发行版下的电源管理软件的软件包。

Linux命令:将笔记本电脑/上网本置于休眠/挂起模式

让我们逐步查看所有命令,以将Linux便携式计算机置于休眠或挂起模式。

基于系统的使用命令行挂起或休眠Linux笔记本电脑的方法

执行以下命令:

$ systemctl suspend

执行以下内容以休眠基于Linux的笔记本电脑:

$ systemctl hibernate

Linux命令挂起系统

要挂起系统,请执行:

# pm-suspend

或者

$ sudo pm-suspend

Linux命令休眠系统

要休眠系统,请执行:

# pm-hibernate

或者

$ sudo pm-hibernate

或者

$ systemctl hibernate

一定时间后如何使计算机进入睡眠状态?

您可以使用at命令,如下所示,让笔记本电脑在30分钟后进入睡眠状态:

echo 'pm-suspend' | at now + 30 minutes

或者

echo 'systemctl suspend' | at now + 30 minutes

挂起系统后如何添加挂钩(或所谓的脚本)?

您可以将脚本放置在以下目录中。
它们在挂起和恢复时执行:

  • /etc/pm/sleep.d包括Debian在内的几乎所有发行版都首先在这里运行脚本。
  • /usr/lib/pm-utils/sleep.d默认的Debian位置。

简而言之,如果在挂起/恢复时需要运行自定义命令,则应仅将自定义脚本放在/etc/pm/sleep.d/目录中。

样例Shell脚本

#!/bin/sh
# If we are running NetworkManager, tell it we are going to sleep.
# TODO: Make NetworkManager smarter about how to handle sleep/resume
#       If we are asleep for less time than it takes for TCP to reset a
#       connection, and we are assigned the same IP on resume, we should
#       not break established connections.  Apple can do this, and it is
#       rather nifty.
 
. "${PM_FUNCTIONS}"
 
suspend_nm()
{
	# Tell NetworkManager to shut down networking
	dbus_send --print-reply --system                         \
		--dest=org.freedesktop.NetworkManager  \
		/org/freedesktop/NetworkManager        \
		org.freedesktop.NetworkManager.sleep 2>&1 > /dev/null
}
 
resume_nm()
{
	# Wake up NetworkManager and make it do a new connection
	dbus_send --print-reply --system                        \
		--dest=org.freedesktop.NetworkManager \
		/org/freedesktop/NetworkManager       \
		org.freedesktop.NetworkManager.wake 2>&1 > /dev/null
}
 
case "" in
	hibernate|suspend)
		suspend_nm
		;;
	thaw|resume)
		resume_nm
		;;
	*) exit $NA
		;;
esac