Hero X

我自己的网站。什么都有,尽量不鸽。

为ubuntu设置开机启动

Ubuntu 是一个广受好评的 Linux 发行版。不过 Linux 的生命力就在于命令行,实际上要实现一些功能的话,最快最简便的方法,(甚至唯一的方法),就是使用命令行的方式。

笔者使用的系统是 Ubuntu 18.04 LTS 。这个版本的 Ubuntu 改用了 Gnome 作为用户界面,更加清爽好用了,不过仍旧有些不易用的地方——比如没法从图形界面的设置添加开机启动项。(而 Windows 的话,烦恼就变成了无法禁用一些应用的开机启动。当然,win10 的任务管理器中可以设置)

作为一个熟悉 Ubuntu 的好少年,当然是……通过命令行自己动手,添加开机启动项了。方法小记如下。


Ubuntu 18.04 使用 systemd 来管理任务。systemd 会自动在开机时执行 rc.local.service 。我们进入终端,来看看里面的内容。

vi /lib/systemd/system/rc.local.service
《为ubuntu设置开机启动》
这是未经修改的 rc.local.service

查阅官方文档可以得知,rc.local.service的配置分为 3 个部分。Unit 是启动顺序与依赖关系。显然,这里调用了 rc.local 。大家都熟悉吧?这是大多数 Linux 发行版的开机启动脚本。Service 是启动的动作。Install 是对脚本文件的配置。所以我们就遇到了一个问题,照理来说,直接编辑 rc.local 就可以增减启动项。然而这里 rc.local 并没有正确 install ,所以我们还要在文件末尾增添上 Install 的配置。

[Install]  
WantedBy=multi-user.target  
Alias=rc-local.service
《为ubuntu设置开机启动》

之前我们提到过,Ubuntu 开机时将会调用的脚本,是 /etc/init.d/rc.local 。所以我们可以直接把命令/脚本添加进这个文件里面来。那么,我们就来编辑它。Ubuntu 18.04 中压根就没有这个文件。所以其实我们是在创建它。

sudo vi /etc/rc.local

而这个文件是有格式的,否则不能执行。把如下内容复制进去:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

然后,所需要执行的命令写在 exit 0 之前,我这里写的是 free -m 。

《为ubuntu设置开机启动》

给它权限。毕竟这文件是我们 diy 的,但权限不能错。

sudo chmod +x /etc/rc.local

然后,还有个问题。systemd 读取的是 /etc/systemd/system , 然而 rc.local.service 在 /etc/systemd/system 。所以,给它加个软链接 buff 。

sudo ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/
## 如果你显示器不够大,看到它换行了,请记得全部复制。

接下来,重启系统,检查是否成功。


P.S.

Ubuntu 使用的 vim 并不算完整版的 vim 。如果用不习惯,可以执行:

sudo apt-get remove vim-common
sudo apt-get install vim

以及我惊奇地发现,有个需要 sudo 的命令,放到 rc.local 里面一样能够执行。看来这个开机启动的方法,并不会受制于权限。很不错。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注