1. 程式人生 > 其它 >Linux設定指令碼/服務開機自動執行/啟動

Linux設定指令碼/服務開機自動執行/啟動

  在非圖形化介面情況下,Linux開機自動執行/啟動的設定可以通過如下方法:

  linux環境:CentOS Stream release 9

1. /etc/rc.local檔案

通過對於沒有被註冊為系統服務的指令碼如自行編寫的指令碼,可以通過在rc.local中新增相關指令碼路徑和名稱來開機自動執行

/etc/rc.local是指向/etc/rc.d/rc.local的一個指令碼,它是在系統初始化級別指令碼執行之後再執行;

rc.local內容如下:

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this 
file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. sh /root/t.sh exit 0

sh /root/t.sh使用者自定義新增的執行指令碼命令,需要放在exit 0之前

實測只需新增指令碼絕對路徑地址和名稱也可,如下文啟動tomcat的命令一樣不加sh  ./等執行。

t.sh內容如下:

#!/bin/sh
touch /root/test.sh
echo ttt > /root/test.sh

 

reboot後,檢視root下,已生成test.sh檔案且有內容ttt。

需要注意的是:

1.初次使用該指令碼時,需要給/etc/rc.d/rc.local賦予可執行許可權,rc.local註釋內容也已提到這一點,執行chmod +x /etc/rc.d/rc.local即可

2.該指令碼執行時,系統環境變數(如Java環境JDK等)還沒正常賦值,因此如是在rc.local裡只新增啟動tomcat的命令而不設定java環境變數是不會成功的

,具體可以檢視var/log/messages搜尋rc.local日誌資訊提示

rc.local[910]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
rc.local[910]: At least one of these environment variable is needed to run this program

在rc.local啟動tomcat的命令前面加上設定環境變數的命令即可

#!/bin/bashsh /root/t.sh 

export JAVA_HOME=/app/jdk/jdk1.8.0_221
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
/app/tomcat/bin/startup.sh
exit 0

 reboot後已可再次訪問tomcat服務

 

2.chkconfig命令設定

對於在安裝過程中已經被註冊為系統服務的服務如mysql等,可以通過chkconfig命令設定開機啟動;

chkconfig可查詢作業系統在每一個執行等級中會執行哪些系統服務,其中包括各類常駐服務。

 

使用語法:

chkconfig [--add][--del][--list][系統服務名稱]  chkconfig [--level <等級代號>][系統服務名稱][on/off/reset]

引數

  • --add  增加所指定的系統服務,讓 chkconfig 指令得以管理它,並同時在系統啟動的敘述檔案內增加相關資料。
  • --del  刪除所指定的系統服務,不再由 chkconfig 指令管理,並同時在系統啟動的敘述檔案內刪除相關資料。
  • --level<等級代號>  指定讀系統服務要在哪一個執行等級中開啟或關畢。

eg:

開啟服務

# chkconfig telnet on   //開啟 Telnet 服務

關閉服務

# chkconfig telnet off  // 關閉 Telnet 服務