linux系統啟動時候同時啟動tomcat(多個)

2021-07-09 22:26:48 字數 2048 閱讀 1043

由於公司專案需要,將乙個大專案分成n多個子系統,而這些又全部部署在同乙個目錄下不同的tomcat裡,每次一斷電,測試伺服器上的服務就要乙個乙個啟動,就想著能不能寫個shell指令碼一次搞定,研究一上午,弄了個大概,還有許多地方需要優化,稍候會說,先記錄一下,省的以後找起來麻煩。

思路很簡單:

1、系統啟動的時候順便啟動乙個服務,這個服務用來呼叫shell指令碼

2、編寫乙個shell指令碼,遍歷目錄下所有的tomcat,找到startup.sh並執行

話不多說,來看**。

①在/etc/init.d下新建乙個檔案tomcat-auto-start-service

vi /etc/init.d/tomcat-auto

-start

-service

內容如下:

#!/bin/sh  

# chkconfig: 345 99 10

# description: auto-starts tomcat

# /etc/init.d/tomcatd

# tomcat auto-start

# source function library.

#. /etc/init.d/functions

# source networking configuration.

#. /etc/sysconfig/network

etval=0

start

()

case

"$1"

in

start)

start

;;

esac

exit

$retval

該指令碼大概意思是該服務有乙個start方法,下面會有用到,而start方法只做一件事就是呼叫下面的shell指令碼。

另外在根目錄下新建乙個starttomcat.sh,內容如下

#!/bin/bash  

function ergodic

()

init_path="/usr/local/tomcat"

ergodic $init_path

該指令碼的大概意思:傳入初始化路徑,遍歷該目錄,如果遇到檔名為startup.sh,則執行,否則遞迴呼叫,並傳入當前目錄

(語法我也是一瓶子不滿半瓶子咣噹的,請大神來吐槽)

:wq
②給該檔案授權,反正是公司內部測試伺服器,為了方便,授權777

chmod -r

777 tomcat-auto

-start

-service

③掛載,具體rcx.d是幹嘛的,有興趣的童鞋可以研究一下,需要說明的是最後的命名,以s或者以k開頭是有原因的,根據不同需要可能是s開頭,也可能是k開頭,之後的數字代表他們的啟動順序

ln -s /etc/init.d/tomcat-auto

-start

-service /etc/rc2.d/s16tomcatautostart

④設定自動啟動,其實也就是加入到啟動服務中

chkconfig --add tomcat-auto

-start

-service

⑤重啟,驗證

reboot
注:此後也可以用service tomcat-auto-start-service start 來啟動所有的tomcat服務

需要進一步優化:

一、如果tomcat/bin/startup.sh沒有許可權,不能自動授權

二、只有start服務沒有stop和restart(由於暫時只有這乙個需求,先寫這乙個功能,程式猿最好不要過度設計)

三、這種遍歷目錄查詢startup.sh的方法貌似不太好,然而暫時未想到其他方法,希望看到的大神給指點一二

以此為記,繼續努力。

參考文獻:

linux獲取系統啟動時間

1 前言 2 sysinfo結構 sysinfo結構保持了系統啟動後的資訊,主要包括啟動到現在的時間,可用記憶體空間 共享記憶體空間 程序的數目等。man sysinfo得到結果如下所示 struct sysinfo 3 獲取系統啟動時間 通過sysinfo獲取系統啟動到現在的秒數,用當前時間減去這...

linux系統啟動時間分析

sudo apt get install bootchart pybootchartgui pngquant 安裝bootchart時會執行以下操作 update initramfs generating boot initrd.img 3.14.18 031418 generic 由乙個執行在in...

linux獲取系統啟動時間

1 前言 2 sysinfo結構 sysinfo結構保持了系統啟動後的資訊,主要包括啟動到現在的時間,可用記憶體空間 共享記憶體空間 程序的數目等。man sysinfo得到結果如下所示 1 struct sysinfo 3 獲取系統啟動時間 通過sysinfo獲取系統啟動到現在的秒數,用當前時間減...