OpenWrt啟動指令碼規則

2021-09-26 18:46:42 字數 1533 閱讀 9270

在做專案過程中,時常新增一些啟動指令碼,但是對整個指令碼的啟動流程和規則缺乏理解,所以整理加深一下。

etc/init.d/

etc/rc.d/

#!/bin/sh 指令碼直譯器

/etc/rc.common 指令碼執行前的檢查指令碼,可以檢測出非法的引數

start=40 在etc/rc.d/生成s40***,在啟動時按照數字從小到大執行

stop=40 在etc/rc.d/生成k40***,在關閉時按照數字從大到小執行

boot 有boot時就不會執行start

#!/bin/sh /etc/rc.common

start=40

stop=40

boot()

start()

restart()

stop()

start   # 啟動服務

stop # 停止服務

restart # 重啟服務

reload # 重新載入配置檔案, 如果失敗則重啟

enable # 啟用開機自啟動

disable # 禁用開機自啟動

enable 啟動開機啟動後會在etc/rc.d/下面建立鏈結檔案指向etc/init.d/下面對應檔案。

編譯前,只在etc/init.d/下面新增了檔案,編譯後生成了etc/rc.d/下面的檔案,有些沒有被enable,是在哪兒設定的呢?

for f in /etc/init.d/* ; do $f enabled && echo $f on || echo $f **disabled**; done

/etc/init.d/telnetd **disabled**

/etc/init.d/tige***ce on

指令碼加引數enabled返回0表示啟動,返回1表示沒有啟用。

等同下面指令碼:

#!/bin/sh

for f in /etc/init.d/*

do $f enabled

if [ 0 -eq $? ] ;then

echo $f on

else

echo $f **disabled**

fidone

原理分析:

啟動指令碼執行前會先執行/etc/rc.common,enable裡面會檢測/etc/rc.d/對應的檔案是否可執行。

initscript="$1"

enabled() ")"

[ -x "$ipkg_instroot/etc/rc.d/s$$" ]

}

uds >/dev/null &,預設為1代表stdout標準輸出,正常不會有列印,異常才會列印

uds 2>/dev/null >/dev/null,2代表stderr標準錯誤輸出,只有命令返回異常的錯誤資訊才會輸入到後面,正常的資訊會列印出來

1、許可權問題,etc/init.d/下檔案需要有執行許可權,否則不能啟動指令碼,且看到異常列印;

openwrt啟動指令碼分析

openwrt啟動指令碼分析 1.linux核心的配置檔案由下面兩個檔案組成 a.target linux generic 2.4 config default b.target linux brcm 2.4 config default 在配置檔案中可以看到 config cmdline root...

openwrt啟動指令碼分析

openwrt是通過一系列shell指令碼進行啟動流程的組織,下面是啟動流程的提綱。如 果想詳細了解啟動的過程,則需要仔細走讀指令碼檔案。1.在make menuconfig 選擇target平台 broadcom bcm947xx 953xx 2.4 2.linux核心的配置檔案由下面兩個檔案組成...

Openwrt啟動流程及啟動指令碼分析

在linux的發展過程中,linux 的啟動程式也在發展,從 sysv init 到現在的 upstart systemd,通常該程式是程序號為 1的程序,該程式在 linux 系統有著舉足輕重的地方。在 openwrt 中,使 用了另外一種啟動程式叫做 procd 本文的重點並不在於介紹 proc...