Linux設置程序開機自啟動


注意:

作者測試時,Linux版本為RedHat6,同時應用在CentOS6應該也可以(作者未實測,但有同事在CentOS6上使用可行),系統版本的不同,可能造成操作上的差異(CentOS7就與CentOS6有較大的不同),但具體的思路可借鑒。

以下操作均在root權限下

 

Linux下配置某個服務的開機自啟動,分為兩種情況:一種是已經掛載的,另一種是未掛載的。

已經掛載的程序可以使用 chkconfig命令查到運行等級,如httpd服務

 

執行命令:

 

#chkconfig  --list |grep httpd

 

打印信息:

httpd  0:off    1:off 2:off   3:off  4:off   5:off   6:off

未掛載的程序,不會打印任何信息,如Tomcat

 

執行chkconfig  --list |grep tomcat,沒有打印任何信息

 

一,已掛載程序開機自啟動

以httpd服務舉例。

 

在root用戶下打開一個終端。

 

執行命令:

chkconfig  --list |grep httpd 

可以看到0~6都是off。

執行命令:

 # chkcongfig httpd on

執行命令:

chkconfig  --list |grep httpd 

執行完chkcongfig httpd on后,2~5對應的值變成了on.

 

此時我們通過service httpd status 查看http服務狀態,是stopped狀態,沒有開機自啟動,此時我們重啟Linux電腦,再來查看httpd服務是否開機啟動

 

重啟Linux,查看httpd服務狀態:service httpd status,可以看到httpd服務已經啟動

 

知識擴展:

執行chkcongfig httpd on 可以加--level參數,指定將0~6哪些級別開啟,命令格式如下:

# chkcongfig  --level   345  httpd on 

345就是需要開啟(由off變成on)的數字,而不加—level參數時,默認打開的是2~5

 

0~6對應的運行級別如下:

Linux系統有7個運行級別(runlevel)
運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動
運行級別1:單用戶工作狀態,root權限,用於系統維護,禁止遠程登陸
運行級別2:多用戶狀態(沒有NFS)
運行級別3:完全的多用戶狀態(有NFS),登陸后進入控制台命令行模式
運行級別4:系統未使用,保留
運行級別5:X11控制台,登陸后進入圖形GUI模式
運行級別6:系統正常關閉並重啟,默認運行級別不能設為6,否則不能正常啟動

 

二、未掛載程序開機自啟動

未掛載的程序開機自啟動實現方式是編寫程序啟動的.sh腳本,再將此腳本掛載到Linux系統上,讓它開機執行,啟動程序。

 

實現方式有兩種:簡易版和完全版

2.1 簡易版

以Tomcat服務為例

 

步驟如下:

 編寫腳本start.sh,位置為/app/start.sh

可自定義腳本位置和腳本名字,此處的app只是作者在根目錄下自建的一個文件夾

 

腳本內容為:

#!/bin/bash

export JDK_HOME=/app/jdk1.7.0_71

export JAVA_HOME=/app/jdk1.7.0_71

/app/bim/apache-tomcat-7.0.63/bin/startup.sh

 

內容解析:

export JDK_HOME,export JAVA_HOME為安裝的JDK地址,如果沒有JDK,只有JRE,配置也可

/app/bim/apache-tomcat-7.0.63/bin/startup.sh 此為Tomcat運行時startup.sh所在的路徑。

 

上述三個值均應按照你實際情況填寫。同時配置export 是因為Tomcat運行時需要Java_home環境,如果你運行的程序需要的環境不同,根據你的實際情況填寫export,如果不需要額外環境,也就不用寫export

 

 

執行如下命令,將該腳本標記為可執行文件(添加可執行的權限)      

chmod +x /app/start.sh

 執行如下命令將/etc/rc.d/rc.local文標記為可執行文件

chmod +x /etc/rc.d/rc.local

 打開/etc/rc.d/rc.local文件,在最后加上如下腳本:

/app/start.sh

 

測試:重啟服務器

執行命令:

 

ps -ef |grep tomcat 

 

打印Tomcat啟動的詳細信息表示啟動成功。


如果只打印:

root      3118  3063  0 19:20 pts/0    00:00:00 grep tomcat 一行信息,代表沒有啟動成功。

 

如果是其他服務,也可以用ps -ef |grep 服務名 來查詢是否啟動成功。

 

Tomcat還能用瀏覽器輸入localhost:8080來訪問,確認是否啟動成功(如果沒有改動啟動端口,默認是8080,如有改動,請按照實際情況填寫。啟動端口可以通過Tomcat 的conf文件夾下server.xml文件查到)

 

補充:

 簡易版還有一種可行的辦法:

 在 /etc/rc.d/rc.local 中添加腳本

export  JAVA_HOME=/app/jdk1.7.0_71 

/app/bim/apache-tomcat-7.0.63/bin/startup.sh

取值說明:

/app/jdk1.7.0_71  JDK安裝位置

/app/bim/apache-tomcat-7.0.63/bin/startup.sh   Tomcat 啟動startup.sh文件路徑

 執行如下命令將/etc/rc.d/rc.local文標記為可執行文件

 chmod +x /etc/rc.d/rc.local

 

2.2 完全版

 編寫shell腳本

 在/etc/init.d下新建一個文件tomcat,打開,添加如下內容:

 

#!/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 

RETVAL=0 

export JAVA_HOME=/app/jdk1.7.0_71 

export JRE_HOME=/app/jdk1.7.0_71/jre 

export CATALINA_HOME=/app/bim/apache-tomcat-7.0.63 

export CATALINA_BASE=/app/bim/apache-tomcat-7.0.63 

start() 

        if [ -f $CATALINA_HOME/bin/startup.sh ]; 

          then 

            echo $"Starting Tomcat" 

                $CATALINA_HOME/bin/startup.sh 

            RETVAL=$? 

            echo " OK" 

            return $RETVAL 

        fi 

stop() 

        if [ -f $CATALINA_HOME/bin/shutdown.sh ]; 

          then 

            echo $"Stopping Tomcat" 

                $CATALINA_HOME/bin/shutdown.sh 

            RETVAL=$? 

            sleep 1 

            ps -fwwu root | grep tomcat|grep -v grep | grep -v PID | awk '{print $2}'|xargs kill -9 

            echo " OK" 

            # [ $RETVAL -eq 0 ] && rm -f /var/lock/... 

            return $RETVAL 

        fi 

 

case "$1" in 

 start)  

        start 

        ;; 

 stop)   

        stop 

        ;; 

                                                 

 restart) 

         echo $"Restaring Tomcat" 

         $0 stop 

         sleep 1 

         $0 start 

         ;; 

 *) 

        echo $"Usage: $0 {start|stop|restart}" 

        exit 1 

        ;; 

esac 

exit $RETVAL

 

 注意文檔中紅色的部分:

 

export JAVA_HOME=/app/jdk1.7.0_71   

JDK安裝路徑

 

export JRE_HOME=/app/jdk1.7.0_71/jre

JRE 所在路徑 

 

 

export CATALINA_HOME=/app/bim/apache-tomcat-7.0.63 

Tomcat程序所在路徑

 

export CATALINA_BASE=/app/bim/apache-tomcat-7.0.63

Tomcat程序所在路徑

 

-f $CATALINA_HOME/bin/startup.sh

 此處CATALINA_HOME就是拿的上面我們賦的值,加上bin/startup.sh就是Tomcat啟動腳本startup.sh所在的路徑,包括后面的shutdown.sh,這個腳本就是這樣實現了Tomcat的開啟和關閉,而重啟restart只不過是先調用shutdown.sh,再調用startup.sh。

 

 保存退出之后,給腳本文檔增加可執行權限

 執行命令:

 chmod +x /etc/init.d/tomcat 

 

掛載,執行命令:

  ln -s  /etc/init.d/tomcat /etc/rc2.d/S16Tomcat  

 

設置開機自啟動,執行命令

 chkconfig --add tomcat

此時我們使用chkconfig  --list |grep tomcat命令,可以發現Tomcat加入了chkconfig,也就能通過修改其運行等級來實現開機啟動與否。而且Tomcat可以使用service tomcat start/stop/restart命令進行開啟/關閉/重啟。

重啟電腦,驗證Tomcat是否開機重啟。

其他程序的腳本文件可能會有些變化,比如說有些程序沒有自帶的關閉腳本(如Tomcat的shutdown.sh腳本),也有可能啟動腳本的名字不叫start.sh,具體的服務按照具體情況修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM