Ubuntu 18.04的改动还是比较大,很多之前版本 Ubuntu上简单易用的一些功能都被砍了,比如设置 rc.local 自动启动脚本的功能。之前的 Ubuntu上只需要把想要自动启动的脚本放到 /etc/rc.local
这个文件,就可以开机启动了,但是 Ubuntu 18.04 这样做已经不行了,因为 rc-local.service 这个 systemd service 已经默认不启用了。所以我们所需要做的就是重新启用 rc-local.service,然后就可以像之前一样简单的设置开机自动启动脚本了。
一、创建 rc-local.service 配置文件
这个配置文件默认在 /lib/systemd/system/
这个目录下,我们只需将它拷贝到对应目录:
cp /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
然后编辑这个文件:
vim /etc/systemd/system/rc-local.service
在最后加上这些内容:
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
修改后的 rc-local.service 文件完整如下:
# SPDX-License-Identifier: LGPL-2.1+
#
# 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.
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8) ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
二、创建 rc.local 文件
配置完成后,还需要创建一个 rc.local 文件:
sudo vim /etc/rc.local
在这个文件里写入我们想要开机自动启动的命令即可。
然后给这个文件加上执行权限:
sudo chmod +x /etc/rc.local
至此,就已经完成了 rc.local 的配置,重启之后会自动启动对应想启动的脚本。
如果发现没有生效,可以尝试:
sudo systemctl enable rc-local
接着启动这个服务并查看它的状态
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
命令输出如下
● rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/rc-local.service.d
└─debian.conf
Active: active (running) since Thu 2018-11-01 13:17:08 CST; 2s ago
Docs: man:systemd-rc-local-generator(8)
Process: 10810 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/rc-local.service
└─10811 /usr/bin/python /usr/bin/sslocal -c /home/xugaoxiang/Tools/ss/ss.json
11月 01 13:17:08 ubuntu systemd[1]: Starting /etc/rc.local Compatibility...
11月 01 13:17:08 ubuntu systemd[1]: Started /etc/rc.local Compatibility.
11月 01 13:17:08 ubuntu rc.local[10810]: INFO: loading config from /home/xugaoxiang/Tools/ss/ss.json
11月 01 13:17:08 ubuntu rc.local[10810]: 2018-11-01 13:17:08 INFO loading libcrypto from libcrypto.so.1.1
11月 01 13:17:08 ubuntu rc.local[10810]: 2018-11-01 13:17:08 INFO starting local at 127.0.0.1:1080
可以看到rc.local中的脚本已经被正确执行了。