具体参见http://www.r9it.com/20180613/ubuntu-18.04-auto-start.html
这样操作玩一般就没有问题了,/etc/rc.local可以被执行,但是该脚本在执行时不能读取通过/etc/profile或者~/.bashrc等方式配置的环境变量,说明systemctl早于/etc/profile或者~/.bashrc等脚本的执行;
比如楼主实在开机启动nexus时发现的这个问题:
通过
systemctl status rc.local
发现nexus启动脚本被执行,但是报错了。原因是没有没找到JDK,所以在/etc/rc.local中增加了如下修改。
[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/java/jdk1.8.0_111 ###增加这句话 Environment可以有多个
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
另外说明/lib/systemd/system中rc.local.service是rc-local.service的软连接
-rw-r--r-- 1 root root 728 3月 11 14:40 rc-local.service
lrwxrwxrwx 1 root root 16 11月 27 06:34 rc.local.service -> rc-local.service
所以rc.local和rc-local是一回事。