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步跳過來的),把等待隊列從等待隊列頭中刪除(防止多次喚醒)