一:咱們通過這篇文章來演示怎么將某個程序作為服務(就類似Windows服務可以開機自動啟動),這里以tomcat為例,已經親測過;
二:步驟(最好用root用戶來做這種事情,切換root用戶記得su - root)
1)在/etc/rc.d/init.d目錄下新建服務名文件,我個人的是叫tomcatd;此時存在/etc/rc.d/init.d/tomcatd文件;
2)編輯這個文件,最終代碼如下:
// 這里說明下,下面的內容凡是在/**/內的都表示為了描述功能而做的備注,不應該寫到真實環境
#!/bin/bash #chkconfig: 2345 90 60/*2345是表示這個服務的優先級,可以跟着寫即可,90和60分別代表start和kill的優先級,目前所知似乎只要是10-90之間就沒太大問題*/ #description: auto_run/*據說是為了可以自動運行,而且還有說沒有這個參數就會怎樣怎樣的,但是我在CentOS下測試這個可以沒有*/ #source function libary/*更新一下最新的配置*/ . /etc/rc.d/init.d/functions #source networking configuration . /etc/sysconfig/network #check that networking is up/*如果你的不是網絡服務則這句話不要它,而且即便是網絡服務也要有一些特殊配置這個代碼才會有效*/ [ "$NETWORKING" = "no" ] && exit 0 #tomcat home path tomcat=/usr/local/apache-tomcat-8.5.29 startup=$tomcat/bin/startup.sh shutdown=$tomcat/bin/shutdown.sh #echo -n 是不換行輸出,即前后兩個echo輸出的在同一行 #$?是上一次執行命令的返回值 start(){ echo -n $"Starting tomcat service:" sh $startup echo $?/*每次service tomcatd start都會輸出一句話最后OK什么的*/ } stop(){ echo -n $"Stoping tomcat service:" sh $shutdown echo $? } restart(){ stop start } status(){
/*這個輸出狀態的個人偷懶了,可以寫精確一點*/ ps -ef|grep tomcat } case "$1" in start|stop|restart|status) $1 ;;/*類似break;*/ *)/*default,后面也可以加上;;,*)並非必須的*/ echo 'Not support operation.' esac exit 0/*表示此shell命令執行成功*/
上面的腳本根據自己的需求寫好保存,然后通過:
chkmod 755 /etc/rc.d/init.d/tomcatd;給這個腳本文件添加所屬者所有權限和組即其它人的讀和運行的權限;
然后用chkconfig --add tomcatd;命令將該腳本添加到服務;
用chkconfig tomcatd on;將此服務作為開機啟動服務;
之后便是用service tomcatd (start|stop|restart|stop)命令操作此服務了;
以上均自己測試過,如果有問題可以檢查自己的jdk/jre是否安裝配置好(如果跟java無關則是不需要配置的)
