Linux開機自啟動腳本詳解

一、什麼是開機自啟動腳本

開機自啟動腳本是指在操作系統啟動時自動執行的腳本文件,主要用於配置系統環境、啟動進程等操作。一般情況下,這些腳本都存放在系統的啟動目錄中。

二、開機自啟動腳本的優點

開機自啟動腳本具有以下優點:

1、無人值守:由於是自動啟動,無需人工干預。

2、自動化管理:可以通過修改腳本文件的方式來添加、刪除需要自動啟動的項目,方便快捷。

3、節省時間:相較於手動開啟多個進程,使用自啟動腳本可以節約大量的時間。

三、開機自啟動腳本的實現方式

在Linux系統中,有多種方式可實現開機自啟動,下面我們來詳細介紹兩種比較常見的方式。

1. 將啟動腳本存放在/etc/rc.d/init.d/目錄下

這是比較常見的一種方式,步驟如下:

1、編寫腳本:比如我們要在系統啟動時啟動nginx服務,則需要編寫一個啟動nginx的腳本文件,可以取名為nginx。

#!/bin/bash
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: nginx is a World Wide Web server.
#              It is used to serve HTTP and HTTPS both.

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

reload() {
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    reload)
        rh_status_q || exit 0
        $1
        ;;
    force-reload)
        force_reload
        ;;
    restart)
        stop
        start
        ;;
    status)
        rh_status
        ;;
    configtest)
        configtest
        ;;
    *)
        echo $"Usage: $prog {start|stop|restart|condrestart|reload|force-reload|status|help|configtest}"
        exit 1
esac
exit $?

其中,必須包含如下幾個函數:start、stop、reload等,用於啟動、停止、重啟nginx服務等操作。

2、賦予腳本可執行許可權:

chmod +x nginx

3、將腳本添加至系統啟動項中:

chkconfig --add nginx
chkconfig nginx on

4、確認nginx是否成功添加至啟動項中:

chkconfig --list nginx

執行以上命令,如果看到如下內容,則說明nginx已成功添加啟動項:

nginx           0:off   1:off   2:on    3:on    4:on    5:on    6:off

2. 將啟動腳本保存在/etc/systemd/system/目錄下

這是一種比較新的啟動方式,步驟如下:

1、編寫腳本:同上,以nginx服務為例,需要編寫nginx.service文件。

[Unit]
Description=The nginx HTTP Server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target

2、將腳本保存至/etc/systemd/system/目錄下:

cp nginx.service /etc/systemd/system/

3、更新systemd配置並啟用服務:

systemctl daemon-reload
systemctl start nginx
systemctl enable nginx

4、確認nginx是否成功添加至啟動項中:

systemctl list-unit-files|grep nginx

若出現如下內容,則說明nginx已成功添加:

nginx.service                        enabled

四、開機自啟動腳本的注意事項

1、應該將啟動腳本存放在系統的啟動目錄下,以確保系統啟動時會自動執行。

2、腳本文件必須要有可執行許可權,才能被自動執行。

3、在寫腳本時,應該加上一些判斷語句,以確保腳本的正確性。

4、應該查看系統日誌,以確保腳本是否被正確執行。

5、注意手動啟動服務和開機自啟動服務之間的衝突問題。

五、總結

開機自啟動腳本在Linux系統中有著廣泛的應用。本文詳細介紹了兩種實現方式,並提出了一些注意事項,希望能夠幫助讀者更好地理解和使用開機自啟動腳本。

原創文章,作者:HZYIR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332769.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HZYIR的頭像HZYIR
上一篇 2025-01-27 13:34
下一篇 2025-01-27 13:34

相關推薦

  • Python腳本控制其他軟體

    Python作為一種簡單易學、功能強大的腳本語言,具有廣泛的應用領域,在自動化測試、Web開發、數據挖掘等領域都得到了廣泛的應用。其中,Python腳本控制其他軟體也是Python…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字元命令行的語言…

    編程 2025-04-29
  • Python自動化運維腳本

    Python自動化運維腳本是使用Python編寫的代碼,可以幫助管理員自動化執行繁瑣、重複的操作任務。通過Python自動化運維腳本,管理員可以在更短的時間內完成工作,提高工作效率…

    編程 2025-04-28
  • 使用Python圖書館搶座腳本的完整步驟

    本文將從多個方面詳細介紹如何使用Python編寫圖書館的座位搶佔腳本,並幫助您快速了解如何自動搶佔圖書館的座位,並實現您的學習計劃。 一、開發環境搭建 首先,我們需要安裝Pytho…

    編程 2025-04-28
  • ArcGIS的Python腳本需要主函數嗎?

    是的,ArcGIS的Python腳本需要主函數,主函數是Python腳本的入口和起點,沒有主函數腳本無法運行。 一、主函數的作用 在Python腳本中,主函數是代碼的入口,所有的代…

    編程 2025-04-28
  • Python監控腳本開發指南

    本文將為大家介紹Python編寫監控腳本的方法和技巧,幫助大家更好地了解監控腳本在項目中的應用。 一、監控腳本概述 監控腳本可以作為一個重要的工具來監控伺服器狀態,包括CPU、內存…

    編程 2025-04-27
  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27
  • Django項目中執行Python腳本

    本文將闡述在Django項目中如何執行Python腳本以及執行腳本的幾種方式。 一、subprocess模塊執行Python腳本 subprocess模塊提供了一個簡單的介面用於創…

    編程 2025-04-27

發表回復

登錄後才能評論