脚本准备
准备的脚本就是自己开机需要的,此处是启动jenkins的脚本
#!/bin/sh
pwdPath=`pwd`
cd /data/jenkins
localPath=`pwd`
javaHome=/data/jdk/jdk-17.0.9/bin
echo "log的地址 =${localPath}"
nohup $javaHome/java -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true -jar jenkins2.429.war --httpPort=8888 >${pwdPath}/jenkins.log 2>&1 &
cd ${pwdPath}
脚本内容有点多,其实是踩了很多坑,后文再细说
启动服务文件编写
进入启动服务目录
cd /usr/lib/systemd/system
创建启动服务文件
touch jenkins2429.service
编辑文件
[Unit]
Description=jenkins2429
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
TimeoutSec=0
ExecStart=/data/start.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Environment="JAVA_HOME=/data/jdk/jdk-17.0.9"
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启动添加
重新加载服务文件
systemctl daemon-reload
添加到开机启动
systemctl enable jenkins2429.service
重启机器
reboot
排错
添加开机启动后,其实不用重启机器,可以直接启动服务
systemctl start jenkins2429.service
启动服务后,可以查看脚本是否启动成功
ps -ef | grep jenkins
第一次创建没有成功,百思不得其解,于是查看jenkins启动日志和systemctl的日志,所以脚本启动要建立好日志地方,方便排错
systemctl查看日志的命令
systemctl status jenkins2429
经过多次排错后发现,单纯的java在开机的时候是失效的,可能是系统还没有启动成功,java环境还没有初始化的原因。于是java就写成全路径。java全路径参考前面脚本准备的脚本内容