现象描述:
由于ubuntu18.04以后没有开机自启动,从网上找了个教程,按着这个博客操作。尝试了两台机器,开机自启动均成功。但是第三台机器的时候,配置都相同的情况下,总是不成功。第三台的配置是aarch64的ubuntu18.04.5的系统。
博客链接:
http://www.szl724.com/sysmaint/linux-os/3214.html
问题分析:
为了验证开机启动项是否生效,便把 /etc/rc.local 增加了两行测试代码,在rt.log文件中新增内容,分别在想启动的脚本前后。发现均成功。
单独运行该行脚本命令,也成功执行。
root@ubuntu ~ $ vim /etc/rc.local
#!/bin/bash
echo `date` >>/tmp/rt.log 2>&1
nohup /home/ubuntu/workroom/jenkins_agent.sh >> /home/ubuntu/workroom/runagent.log 2>&1 &
echo "123" >>/tmp/rt.log 2>&1
~
//jenkins_agent.sh 是启动java进程的。
//reboot后查看java进程是存在。
root@ubuntu ~ $ ps uax|grep java
root 5938 0.0 0.0 6100 620 pts/0 S+ 15:41 0:00 grep --color=auto java
root@ubuntu ~ $ more /tmp/rt.log
Tue Sep 28 15:40:04 CST 2021
123
root@ubuntu ~ $ nohup /home/ubuntu/workroom/jenkins_agent.sh >> /home/ubuntu/workroom/runagent.log 2>&1 &
[1] 6549
root@ubuntu ~ $
root@ubuntu ~ $
root@ubuntu ~ $ ps uax|grep java
root 6553 0.0 0.0 2440 1056 pts/0 D 15:41 0:00 java -jar agent.jar -jnlpUrl http://52.247.199.40:8080/computer/Rlease_aarch64/jenkins-agent.jnlp -secret @secret-file -workDir /home/ubuntu/workroom
root 6578 0.0 0.0 6100 616 pts/0 S+ 15:41 0:00 grep --color=auto java
找到原因了,把命令输出的结果打印到lo日志,看log日志是提示java 找不到命令。
配置:ln -s /home/ubuntu/workroom/jdk1.8.0_271/bin/java /usr/bin/java
重启后,java正常启动。
我猜应该是启动过程是先启动这个脚本,再加载java的环境变量,而java是没有在/usr/bin下,所以现实。所以系统启动完成后java命令是可以用的。而在开机启动过程中是找不到java的。