Ubuntu18以上都没法再用initd管理系统,转为systemd了。因此以前使用rc.local的方法对Ubuntu18以上的系统无效。但是有时候自定义的脚本写Service很麻烦,而且对我这种野生玩家很不友好,因此本文使用一种方法重新启用在Ubuntu18以上的系统中rc.local开机自启的功能。

首先还是需要满足系统的规则,利用service来开机自启脚本。

创建rc-local.service

vi /etc/systemd/system/rc-local.service

然后写入如下内容:

[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

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.
echo "若是能看到这行字,说明添加自启动脚本成功。" > /usr/local/test.log
exit 0

以后添加开机自启脚本都写入这个文件的exit 0之前就可以了。

systemd默认读取/etc/systemd/system下的配置文件, 因此还须要在/etc/systemd/system目录下建立软连接:

ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/
chmod +x /etc/rc.local

启用服务:

systemctl enable rc-local

如果需要关闭,则:

sudo systemctl disable rc-local

然后就可以重启,重启后可以查看日志文件了:

cat /usr/local/test.log