需求:每次開啓服務,和關閉服務都要敲一段命令,太麻煩了,於是嘗試製作成系統(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)