在 Linux 上增加一個新服務並設為開機啟動

上次裝完 JAVA 跟 Tomcat 之後,是用手動的方式將 Tomcat 的服務帶起來的,(啟動:/opt/tomcat/bin/startup.sh 停止:/opt/tomcat/bin/shutdown.sh)這次我們要做的就是將 Tomcat 加為系統的一個服務,改為可用 service service_name start/stop 的方式來啟動跟關閉:

首先,我們先到 /etc/init.d/ 底下去新增一個 tomcat 的檔案 (記得要改為可執行喔~)
[root@KHXPROVS1 ~]# touch /etc/init.d/tomcat
[root@KHXPROVS1 ~]# chmod 755 /etc/init.d/tomcat
[root@KHXPROVS1 bin]# ls -alrt /etc/init.d/ |grep tomcat
-rwxr-xr-x 1 root root 609 Oct 2 16:10 tomcat
編輯 /etc/init.d/tomcat 的內容,這個檔案的寫法可以參考系統上面 /etc/init.d/ 下的其他檔案;
比較重要的是第二行,其語法為:
# chkconfig: [runlevels] [start number] [stop number]
# runlevels 代表不同的 run level 狀態, start number 與 stop number 則是在 /etc/rc.d/rc[2345].d 內建立以 S90tomcat 及 K80tomcat 為檔名的設定。
[root@KHXPROVS1 ~]# vi /etc/init.d/tomcat
#!/bin/bash
# process init file for tomcat
#
# chkconfig: 2345 90 80
# description: Apache Tomcat Daemon
#
# processname: /opt/tomcat/bin/startup.sh and /opt/tomcat/bin/shutdown.sh

start() {
echo -n "Starting up Tomcat: ";echo "";
/opt/tomcat/bin/startup.sh
}

stop() {
echo -n "Shutting down Tomcat: ";echo "";
/opt/tomcat/bin/shutdown.sh
}

restart() {
echo "Restarting Tomcat:"
stop
start
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: Tomcat {start|stop|restart}"
exit 1
esac

exit $?
~
~
~
~
"/etc/rc.d/init.d/tomcat" 39L, 524C written
修改完存檔離開,接著我們檢查一下目前 tomcat 是否有啟動:
[root@KHXPROVS1 ~]# ps -aef|grep tomcat
root 22754 22207 0 15:53 pts/2 00:00:00 grep tomcat
好了,現在就來測試一下剛剛的檔案囉,首先,測試一下啟動 tomcat 服務吧:
[root@KHXPROVS1 ~]# service tomcat start
Starting up Tomcat:
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
[root@KHXPROVS1 ~]# ps -aef|grep tomcat|grep -v grep
root 22775 1 30 15:53 pts/2 00:00:11 /usr/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.endorsed.dirs=/opt/tomcat/endorsed -classpath :/opt/tomcat/bin/bootstrap.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start
接著,測試一下停止 tomcat 服務吧:
[root@KHXPROVS1 ~]# service tomcat stop
Shutting down Tomcat:
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
[root@KHXPROVS1 ~]# ps -aef|grep tomcat|grep -v grep
最後,測試一下重新啟動 tomcat 服務吧:
[root@KHXPROVS1 ~]# service tomcat restart
Restarting Tomcat:
Shutting down Tomcat:
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Starting up Tomcat:
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
[root@KHXPROVS1 ~]# ps -aef|grep tomcat|grep -v grep
root 23001 1 99 15:55 pts/2 00:00:07 /usr/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.endorsed.dirs=/opt/tomcat/endorsed -classpath :/opt/tomcat/bin/bootstrap.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start
[root@KHXPROVS1 ~]#
接下來要讓 tomcat 在次開機時都會自動啟動,這裡我們用 chkconfig 這個指令來達成,
先用 --list 將目前的各項服務狀態列出來並 grep 一下 tomcat:
[root@KHXPROVS1 ~]# chkconfig --list|grep tomcat
看的出來目前 tomcat 並不在 chkconfig 的管理列表中,所以我們用 --add 來新增 tomcat 的服務 (增加一個服務名稱給 chkconfig 來管理,該服務名稱 必須存在 /etc/init.d/ 內!)
[root@KHXPROVS1 ~]# chkconfig --add tomcat
[root@KHXPROVS1 ~]# chkconfig --list|grep tomcat
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@KHXPROVS1 ~]#
我們列出 /etc/rc.d/rcx.d/ 底下關於 tomcat 的部分:
[root@KHXPROVS1 ~]# find /etc/rc.d/ |grep 'tomcat'|sort
/etc/rc.d/init.d/tomcat
/etc/rc.d/rc0.d/K80tomcat
/etc/rc.d/rc1.d/K80tomcat
/etc/rc.d/rc2.d/S90tomcat
/etc/rc.d/rc3.d/S90tomcat
/etc/rc.d/rc4.d/S90tomcat
/etc/rc.d/rc5.d/S90tomcat
/etc/rc.d/rc6.d/K80tomcat
好了,報告完畢~
0 Responses