システムコールによって保留中のジョブが正常に終了します。

システムコールによって保留中のジョブが正常に終了します。

昨日、システムを一時停止してもジョブは終了せず、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

カーネルがディスクの1つを同期中に停止したようです。

# 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最終的に同じ問題が再び発生しました。
目が覚めた後、サービスを開始しましたが、システムが再び一時停止しました。

この回避策なしで一時停止できることを願っています。

おすすめ記事