在使用较新版本的 Ubuntu/Debian 系统使用 rc.local

在使用较新版本的 Ubuntu/Debian 系统时,原来写入 /etc/rc.local 或者 /etc/rc.d/rc.local 文件中的开机命令不执行了?

Ubuntu 16.04 以后,默认进程启动管理已经切换至 systemd,不再使用 init.d。

如果想和之前一样使用 rc.local 设置开机自启动,可以通过以下步骤

# 修改 rc-local.service

我们可以发现,/lib/systemd/system/ 目录下存在一个 rc-local.service,但缺少 Install 信息,系统就不认为他是个 systemd 服务。

h
cat > /etc/systemd/system/rc-local.service <<EOF
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
EOF

加入所需启动的服务即可,记得权限
chmod +x /etc/rc.local

# 启动 rc-local 服务

h
systemctl daemon-reload
systemctl start rc-local
systemctl enable rc-local