linux開機自動啟動指令碼

2021-07-04 04:03:53 字數 4459 閱讀 2200

前言

linux有自己一套完整的啟動體系,抓住了linux啟動的脈絡,linux的啟動過程將不再神秘。

閱讀之前建議先看一下附圖。

本文中假設inittab中設定的init tree為:

/etc/rc.d/rc0.d

/etc/rc.d/rc1.d

/etc/rc.d/rc2.d

/etc/rc.d/rc3.d

/etc/rc.d/rc4.d

/etc/rc.d/rc5.d

/etc/rc.d/rc6.d

/etc/rc.d/init.d

目錄

1. 關於linux的啟動

2. 關於rc.d

3.啟動指令碼示例

4. 關於rc.local

5. 關於bash啟動指令碼

6. 關於開機程式的自動啟動

1. 關於linux的啟動

init是所有程序之父

init讀取/etc/inittab,執行rc.sysinit指令碼

(注意檔名是不一定的,有些unix甚至會將語句直接寫在inittab中)

rc.sysinit指令碼作了很多任務作:

init $path

config network

start swap function

set hostname

check root file system, repair if needed

check root space

....

rc.sysinit根據inittab執行rc?.d指令碼

linux是多使用者系統,getty是多使用者與單使用者的分水嶺

在getty之前執行的是系統指令碼

2. 關於rc.d

所有啟動指令碼放置在 /etc/rc.d/init.d下

rc?.d中放置的是init.d中指令碼的鏈結,命名格式是:sk

s開始的檔案向指令碼傳遞start引數

k開始的檔案向指令碼傳遞stop引數

number決定執行的順序

3.啟動指令碼示例

這是乙個用來啟動httpd的 /etc/rc.d/init.d/apache指令碼

可以看出他接受start,stop,restart,status引數

code:

cd /etc/rc.d/init.d &&

ln -sf ../init.d/apache ../rc0.d/k28apache &&

ln -sf ../init.d/apache ../rc1.d/k28apache &&

ln -sf ../init.d/apache ../rc2.d/k28apache &&

ln -sf ../init.d/apache ../rc3.d/s32apache &&

ln -sf ../init.d/apache ../rc4.d/s32apache &&

ln -sf ../init.d/apache ../rc5.d/s32apache &&

ln -sf ../init.d/apache ../rc6.d/k28apache

[copy to clipboard]

4. 關於rc.local

經常使用的 rc.local 則完全是習慣問題,不是標準。

各個發行版有不同的實現方法,可以這樣實現:

code:

touch /etc/rc.d/rc.local

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

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc1.d/s999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc2.d/s999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc3.d/s999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc4.d/s999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc5.d/s999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc6.d/s999rc.local

[copy to clipboard]

5. 關於bash啟動指令碼

/etc/profile

/etc/bashrc

~/.bash_profile

~/.bashrc

是bash的啟動指令碼

一般用來設定單使用者的啟動環境,也可以實現開機單使用者的程式,但要明確他們都是屬於bash範疇而不是系統範疇。

他們的具體作用介紹如下:

/bin/bash這個命令解釋程式(後面簡稱shell)使用了一系列啟動檔案來建立乙個執行環境:

/etc/profile

/etc/bashrc

~/.bash_profile

~/.bashrc

~/.bash_logout

每乙個檔案都有特殊的功用並對登陸和互動環境有不同的影響。

/etc/profile和 ~/.bash_profile 是在啟動乙個互動登陸shell的時候被呼叫。

/etc/bashrc 和 ~/.bashrc 是在乙個互動的非登陸shell啟動時候被呼叫。

~/.bash_logout 在使用者登出登陸的時候被讀取

一 個互動的登陸shell會在 /bin/login 成功登陸之後執行。乙個互動的非登陸shell是通過命令列來執行的,如[prompt]$/bin/bash。一般乙個非互動的shell出現在執行 shell指令碼時候。之所以叫非互動的shell,是因為它不在命令列上等待輸入而只是執行指令碼程式。

6. 關於開機程式的自動啟動

系統指令碼可以放置在/etc/rc.d/init.d中並建立/etc/rc.d/rc?.d鏈結,也可以直接放置在/etc/rc.d/rc.local中。

init.d指令碼包含完整的start,stop,status,reload等引數,是標準做法,推薦使用。

為特定使用者使用的程式(如有的使用者需要使用中文輸入法而有的不需要)放置在~/中的bash啟動指令碼中。

linux 開機啟動指令碼

開機啟動有兩種方式 通過vnc啟動方式進行說明 一 第一種是通過rc.local檔案,直接將要執行的指令碼名稱寫進去,但是此方法無法保證指令碼執行時網絡卡裝置是否已經徹底啟動。通過自帶軟體中心安裝x11vnc,使用下列命令設定密碼。sudo x11vnc storepasswd 新建.sh 指令碼檔...

linux開機啟動指令碼

來一種linux簡單使用的開機啟動指令碼 1.cd etc rc.d init.d 來到這個目錄下 2.vi aa.sh建立乙個指令碼檔案 比如我的指令碼檔案是 aa.sh bin sh chkconfig 2345 80 90 description 開機自動啟動的指令碼程式 編寫你要啟動的程式的...

Linux開機啟動指令碼

2017 03 18 今天是在學習openstack的虛擬機器啟動機制的時候,發現了一直不對的地方。etc rc.d rc.local很早前折騰tor的時候設定過一次,不過那次不知道為什麼就不好使。為了開機啟動一些指令,需要一下幾個步驟 1 chmod x rc.local原來的時候就應該是沒有設定...