防止 Ubuntu 自动待机

Ubuntu 如果插上显示器不使用，一段时间（通常是 20 分钟）后会突然停了。

目前我主要方案是这个： https://www.unixtutorial.org/disable-sleep-on-ubuntu-server/

主要信息：

禁止:

$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.

恢复:

$ sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
Removed /etc/systemd/system/sleep.target.
Removed /etc/systemd/system/suspend.target.
Removed /etc/systemd/system/hibernate.target.
Removed /etc/systemd/system/hybrid-sleep.target.

上面主要做法是把那几个 sleep, suspend, hibernate, hybrid-sleep 行为禁止掉了。

另外，考虑是不是装 Nvidia Driver 的时候不小心装上了 gnome 的缘故，所以做了如下设置。但是似乎不工作。

在当前用户检查电源管理 sleep-inactive-ac-timeout 设置:

$ gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout
1200

疑似这个就是原因。

修改成这样:

$ gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0

查看目前所有选项如下：

$ gsettings list-recursively org.gnome.settings-daemon.plugins.power
org.gnome.settings-daemon.plugins.power lid-close-ac-action 'suspend'
org.gnome.settings-daemon.plugins.power time-critical 300
org.gnome.settings-daemon.plugins.power power-button-action 'suspend'
org.gnome.settings-daemon.plugins.power lid-close-suspend-with-external-monitor false
org.gnome.settings-daemon.plugins.power button-hibernate 'hibernate'
org.gnome.settings-daemon.plugins.power idle-dim true
org.gnome.settings-daemon.plugins.power button-power 'suspend'
org.gnome.settings-daemon.plugins.power lid-close-battery-action 'suspend'
org.gnome.settings-daemon.plugins.power priority 0
org.gnome.settings-daemon.plugins.power idle-brightness 30
org.gnome.settings-daemon.plugins.power active true
org.gnome.settings-daemon.plugins.power critical-battery-action 'hibernate'
org.gnome.settings-daemon.plugins.power button-suspend 'suspend'
org.gnome.settings-daemon.plugins.power button-sleep 'hibernate'
org.gnome.settings-daemon.plugins.power percentage-critical 3
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'suspend'
org.gnome.settings-daemon.plugins.power ambient-enabled true
org.gnome.settings-daemon.plugins.power notify-perhaps-recall true
org.gnome.settings-daemon.plugins.power percentage-low 10
org.gnome.settings-daemon.plugins.power percentage-action 2
org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'suspend'
org.gnome.settings-daemon.plugins.power time-low 1200
org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 1200
org.gnome.settings-daemon.plugins.power time-action 120
org.gnome.settings-daemon.plugins.power use-time-for-policy true

参考 https://ubuntu-mate.community/t/ubuntu-mate-auto-suspend-20-minutes-after-it-restart/17650

效果并没有变化，停止前 log 依然是，然后卡住。

Nov 24 18:50:09 diony NetworkManager[863]: [1637751009.5098] manager: sleep: sleep requested (sleeping: no enabled: yes)
Nov 24 18:50:09 diony ModemManager[934]: [sleep-monitor] system is about to suspend
Nov 24 18:50:09 diony NetworkManager[863]: [1637751009.5100] manager: NetworkManager state is now ASLEEP
Nov 24 18:50:09 diony gnome-shell[1286]: Screen lock is locked down, not locking
Nov 24 18:50:09 diony systemd[1]: Reached target Sleep.
Nov 24 18:50:09 diony systemd[1]: Starting Record successful boot for GRUB...
Nov 24 18:50:09 diony systemd[1]: Starting Suspend...
Nov 24 18:50:09 diony systemd-sleep[18784]: Suspending system...
Nov 24 18:50:09 diony kernel: [ 1221.038239] PM: suspend entry (deep)
Nov 24 18:50:09 diony systemd[1]: grub-common.service: Succeeded.
Nov 24 18:50:09 diony systemd[1]: Finished Record successful boot for GRUB.
Nov 24 18:50:09 diony systemd[1]: Starting GRUB failed boot detection...
Nov 24 18:50:09 diony systemd[1]: grub-initrd-fallback.service: Succeeded.
Nov 24 18:50:09 diony systemd[1]: Finished GRUB failed boot detection.
Nov 24 18:50:09 diony kernel: [ 1221.097020] Filesystems sync: 0.058 seconds
Nov 24 18:50:10 diony /usr/lib/gdm3/gdm-x-session[1242]: (**) Option "fd" "40"
Nov 24 18:50:10 diony /usr/lib/gdm3/gdm-x-session[1242]: (II) event2 - Power Button: device removed
Nov 24 18:50:10 diony /usr/lib/gdm3/gdm-x-session[1242]: (**) Option "fd" "43"
Nov 24 18:50:10 diony /usr/lib/gdm3/gdm-x-session[1242]: (II) event1 - Power Button: device removed
Nov 24 18:50:10 diony /usr/lib/gdm3/gdm-x-session[1242]: (**) Option "fd" "44"
Nov 24 18:50:10 diony /usr/lib/gdm3/gdm-x-session[1242]: (II) event0 - Sleep Button: device removed
Nov 24 18:50:10 diony kernel: [ 1221.728849] snd_hda_codec_hdmi hdaudioC1D0: HDMI: invalid ELD data byte 0
Nov 24 18:50:10 diony /usr/lib/gdm3/gdm-x-session[1242]: (II) systemd-logind: got pause for 13:65
Nov 24 18:50:10 diony /usr/lib/gdm3/gdm-x-session[1242]: (II) systemd-logind: got pause for 13:64
Nov 24 18:50:10 diony /usr/lib/gdm3/gdm-x-session[1242]: (II) systemd-logind: got pause for 13:66

此外，还考虑这个：https://ubuntuhandbook.org/index.php/2020/05/lid-close-behavior-ubuntu-20-04/

主要是编辑 /etc/systemd/logind.conf 这个文件。这个文件原文是：

# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See logind.conf(5) for details.

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend
#HandleLidSwitchExternalPower=suspend
#HandleLidSwitchDocked=ignore
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#HoldoffTimeoutSec=30s
#IdleAction=ignore
#IdleActionSec=30min
#RuntimeDirectorySize=10%
#RemoveIPC=yes
#InhibitorsMax=8192
#SessionsMax=8192

对 #HandleLidSwitch=suspend 一行修改行为：

HandleLidSwitch=lock – 合盖即锁定

HandleLidSwitch=ignore – 合盖即什么都不做

HandleLidSwitch=poweroff – 合盖即关机

HandleLidSwitch=hibernate – 合盖即进入 hibernate 待机状态

当然出于时间考虑直接 mask 掉这几个行为，对目前我的机器而言应该都一样（任何时候都不关机，除非主动手动关）

处理完后才发现之前写过 ，重装后又忘记了….