1. linux系统怎么进入休眠状态
在linux下,我喜欢用命令让系统进入休眠:
$ echo mem | sudo tee /sys/power/state
当然,不用每次都要敲这么一长串,可以把它加入到一个脚本中。 再将该脚本命令加入到/etc/sudoers文件,就可以避免每次都需要输入用户密码了。
2. deepin如何休眠
deepin官网
休眠这个功能还是很酷很实用的,对于Linux系统,休眠一般就是把内存中的数据写入硬盘(swap文件),然后关机。在下一次开机的时候将数据重新载入内存,让你快速回到上一次的工作状态,这在你开启了大量的程序但需要暂停工作的时候尤其好用。
如果你的电脑有swap分区, deepin 会探测到,关机的时候会有休眠选项了,这个功能终于加到关机菜单里了,给 deepin 点赞。
一般来说,如果你有一个可以正常使用的swap分区,只需要在终端执行
systemctl hibernate
就可以休眠了。
如果你休眠之后开机发现你的电脑并没有恢复现场,则需要指定一下启动的磁盘(从swap分区启动),操作方法如下:
修改/etc/default/grub这个文件中的相关内容
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sda3 quiet"
其中/dev/sda3改为你的swap分区对应的标志即可(推荐使用gparted查看)
然后再执行
sudo update-grub
如果你没办法从硬盘划分一个swap分区,你可以通过使用swap文件来进行休眠。
本教程参考了Debian的wiki
大体思路:创建swap文件-->配置swap文件-->安装uswsusp-->配置uswsusp
“256”是指以MB为单位的大小(其后的'm')。将其设置为RAM的至少一半大小(这个是debian wiki给定的数据,我建议设置为至少设置为内存相同大小)。“/swap”是交换文件的路径。它可以位于任何分区(例如root或home)。
此处选择你要使用的swap文件,注:我这里是/var/swapfile这个文件
根据需要选择就好(需要知晓的是,开启加密功能之后休眠的启动所消耗的时间会增加)。如果选择加密的话,它会提示你设定一个密码
“resume offset = 8288”是交换文件实际存放的地方(应该是硬盘的物理地址)。你可以终端执行 swap-offset /swap 获得这个值
“resume device”必须是分区而不是交换文件。一般这行的值会在上一步完成后变成你的swap文件的路径,需要改成你的swap文件所在的分区,如/dev/sda1
编辑/etc/uswsusp.conf文件后:
终端执行 sudo update-initramfs -u
sudo s2disk
如果你的磁盘分区结构变了,比如 sda3 变成了 sda4 ,按照上面步骤再来一遍就好啦(因为需要更新 grub 和 uswsusp.conf )。
3. 如何设置linux进程的休眠
将一个进程置于休眠状态,一般步骤如下:
0. 定义并初始化(如果还没有的话)一个等待队列头(wait_queue_head_t),这个等待队列头应该是能被要休眠的进程和负责唤醒的进程都能访问 到。
1. 对进程的每次休眠,定义并初始化一个等待队列(wait_queue_t)
2. 把等待队列加入到相应的等待队列头中。
3. 把进程状态置为 TASK_INTERRUPTIBLE 或 TASK_UNINTERRUPTIBLE
4. 再次检查休眠条件是否为真,否则跳过第5步
5. 执行 schele()
6. 清理:将进程状态改为 TASK_RUNNING(通常已经是,除非是从第4步跳过来的),把等待队列从等待队列头中删除(防止多次唤醒)