同步发布在个人笔记禁止 ubuntu server 自动休眠/systemctl mask 操作
禁止 ubuntu server 自动休眠/systemctl mask 操作
虽然一般情况下 ubuntu server 系统并不会自动休眠,但是有时候还是会出现这样的奇怪现象。借此记录一下systemctl mask
操作。并且操作也适用于 desktop 系统。
查看自动休眠服务
$ systemctl status sleep.target
● sleep.target - Sleep
Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd.special(7)
正常情况下应该像上面这样inactive
,如果要完全解决这个问题,可以使用systemctl mask
指令。
systemctl mask
一般情况下我们是通过systemctl enable
和systemctl disable
来设置服务的开机自启动和关停自启动,其原理是:
- enable 会在
/etc/systemd/system/
目录下创建需要的软链接,指向/usr/lib/systemd/system/
目录中的文件,以此来使得服务自启动。 - disable则是删除这个软链接,这样服务就不会自启动。
但是被 disable 的服务只是不会开机自启动,别的进程依旧可以启动这个服务。使用systemctl start
就可以正常启动。
所以被 disable 的服务也可能运行。
想要彻底让一个服务失能,我们可以把它屏蔽了
- mask 建立一个指向/dev/null的符号链接
$ systemctl mask your_service
Created symlink from /etc/systemd/system/your_service.service to /dev/null.
这样就算有别的进程通过 start 指令想要启动服务,也只会因为指向 null 而失败。
想要取消这种屏蔽使用 unmask 指令
$ systemctl unmask your_service
屏蔽sleep.target
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.
这样就把和自动休眠相关的服务屏蔽了。