當我昨天暫停系統時,作業並沒有終止,systemd-suspend.service
從那時起我就有一個作業處於不間斷的睡眠狀態:
# systemctl list-jobs
JOB UNIT TYPE STATE
21595 post-resume.target start waiting
21593 systemd-suspend.service start running
21592 suspend.target start waiting
21596 post-resume.service start waiting
# systemctl status systemd-suspend.service
● systemd-suspend.service - Suspend
Loaded: loaded (/nix/store/2jspk70lir7jcn1krax8haw2j7486i3a-systemd-243.3/example/systemd/system/systemd-suspend.se>
Active: activating (start) since Sat 2020-04-04 03:07:36 CEST; 23h ago
Docs: man:systemd-suspend.service(8)
Main PID: 16761 (systemd-sleep)
IP: 0B in, 0B out
Tasks: 1 (limit: 4915)
Memory: 1.0M
CPU: 20ms
CGroup: /system.slice/systemd-suspend.service
└─16761 /nix/store/2jspk70lir7jcn1krax8haw2j7486i3a-systemd-243.3/lib/systemd/systemd-sleep suspend
Apr 04 03:07:36 phlegethon systemd[1]: Starting Suspend...
Apr 04 03:07:36 phlegethon systemd-sleep[16761]: Suspending system...
# ps aux |grep suspend
root 16761 0.0 0.0 10364 2052 ? Ds Apr04 0:00 /nix/store/2jspk70lir7jcn1krax8haw2j7486i3a-systemd-243.3/lib/systemd/systemd-sleep suspend
當我嘗試手動觸發掛起時,核心(5.4.14)回答 EBUSY:
# echo mem >/sys/power/state
-bash: echo: write error: Device or resource busy
看起來核心在同步其中一個磁碟時卡住了:
# cat /proc/16761/stack
[<0>] iterate_bdevs+0x98/0x142
[<0>] ksys_sync+0x6e/0xb0
[<0>] ksys_sync_helper+0x13/0x90
[<0>] pm_suspend.cold.8+0x213/0x361
[<0>] state_store+0x80/0xe0
[<0>] kernfs_fop_write+0xc1/0x1a0
[<0>] vfs_write+0xa5/0x1a0
[<0>] ksys_write+0x59/0xd0
[<0>] do_syscall_64+0x4e/0x120
[<0>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
現在在這種狀態下我甚至無法正常關閉機器電源:
# systemctl poweroff
Failed to power off system via logind: There's already a shutdown or sleep operation in progress
那我該怎麼辦?我很想伸手去拿大槍(Sysrq),但我想知道它是否真的有效?sync(1)
正如預期的那樣,只是掛起,所以我不願意嘗試。
另外,有沒有辦法查到哪個核心正在等待的磁碟設備?我有點希望它只是一些 USB 設備,沒什麼大不了的。
答案1
我知道這並不能完全回答問題,但也許會有所幫助。
您或其他將閱讀本文的人。
我現在有(或仍然有)類似的問題。掛起作業未完成返回系統並掛起作業。
24913 systemd-suspend.service start running
24912 suspend.target start waiting
當我嘗試繼續時,我收到了與您相同的訊息。
# systemctl suspend
Failed to suspend system via logind: There's already a shutdown or sleep operation in progress
我的目標是暫停,而不是關閉。這就是我所做的。
# systemctl cancel
# systemctl stop systemd-suspend.service
首先,停止懸掛操作。
其次,導致系統立即掛起。
取消後我嘗試暫停systemctl suspend
,但結果又遇到同樣的問題。
醒來後我啟動了服務,系統又暫停了。
希望我現在能夠在沒有此解決方法的情況下暫停。
答案2
我遇到了類似的問題。我花了一天多的時間來尋找我案件的根本原因。幸運的是,這是 Ubuntu 20.04 僅幾週前的安裝,因此它接近全新安裝。
對我來說,登入顯示管理器後,NetworkManager 沒有運行或重新啟動等(與預設值相同),因此我無法存取 WiFi。
我還看到了與上面提到的等效內容:
# systemctl list-jobs
JOB UNIT TYPE STATE
21593 systemd-suspend.service start running
使用它systemctl cancel 21593
會停止工作並解決問題,這表明這確實是問題所在。
從man systemd-sleep
發現
在進入系統掛起和/或休眠之前,systemd-suspend.service(以及其他提到的單元)將運行/lib/systemd/system-sleep/ 中的所有可執行檔...此目錄中的所有可執行檔都是並行執行的,並且在所有可執行檔完成之前不會繼續執行該操作。
因此,經過檢查,/lib/systemd/system-sleep
我意識到它包含tlp
我最近剛安裝的腳本。我使用卸載了 tlp 和關聯的軟體包
sudo apt --purge remove tlp tlpui tlp-rdw
問題就完全消失了。