需求:每次开启服务,和关闭服务都要敲一段命令,太麻烦了,于是尝试制作成系统(centos)服务,开机自动启动服务,service jenkins start ,service jenkins stop,service jenkins restart多爽
#!/bin/bash
#
# chkconfig: 2345 89 11
# description: jenkins service
#其实46行以上的代码只不过是写给46行之后调用,两个分号前面的函数就是你自定义service start,stop,restart 触发的代码
#start,stop逻辑一般是调用你的程序关闭服务的命令,不要傻傻的自己还去写。。
#restart一般是直接调用stop,start
#reload() -----> 告诉程序重读配置文件,改变程序的运行状态
#/etc/rc.d/init.d/ 系统服务脚本目录,一个服务会有一个脚本,ls可以看到其实有很多写好的服务脚本,可以打开某一个看看,别人的怎么写的,参考借鉴下
#/var/lock/subsys 服务锁定目录(存在则表示已经创建了实例pid文件)主要是为了防止重复启动
SERVICE_NAME=jenkins
SERVICE_ROOT=/home/jenkins
PIDFILE=/var/run/${SERVICE_NAME}/${SERVICE_NAME}.pid
LOCKFILE=/var/lock/subsys/${SERVICE_NAME}
start() {
echo "Starting ${SERVICE_NAME} ..."
start_something
touch ${LOCKFILE}
echo "${SERVICE_NAME} is started"
}
stop() {
echo "Stopping ${SERVICE_NAME} ..."
stop_something
rm -f ${lockfile} ${pidfile}
}
start_something(){
`nohup ${SERVICE_ROOT}/start_jenkins.sh > jenkins.log 2>&1 &`
}
stop_something(){
`java -jar ${SERVICE_ROOT}/jenkins_home/war/WEB-INF/jenkins-cli.jar -s http://localhost:8000 shutdown --username admin --password a87905338`
}
restart(){
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|force-reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|force-reload}"
exit 2
esac
要注意的是, 文件的格式要是 unix. 可以通过 VI 命令 :set ff? 查看.如果不是, 执行的时候会报错:
/bin/bash^M: bad interpreter
:set fileformat=unix --> 设置编码为unix(还可以设置为 doc)
VI 中保存
将该脚本设置为可执行:
chmod +x servicefile
2.添加系统服务
chkconfig --add jenkins
3.系统服务自启动
chkconfig --level 345 jenkins on
4.测试
service jenkins start
service jenkins stop
shutdown -r now
每执行完一个测试命令都访问页面和看看进程是否正常(ps -ef | grep jenkins)