如何在啟動時執行命令
如何在啟動時執行某命令或運行某程式,試了幾次每每不成功,於是參考一些資料才搞定。
有人建議在.login中執行相應命令,或在.bashrc(用tcsh
shell,在.tcshrc)裡寫命令。這是不行的,.login是在使用者登入時執行,使用者可能在本地無需登入,或者在遠程多個使用者登入,多次登入;而.tcshrc是在shell啟動時執行,登入後使用者一般會多次開啟shell,這樣該命令或程式就會被多次執行。
Linux 啟動順序:
1、 BIOS自檢
2、 運行系統核心並檢測硬體
3、 運行系統的第一個進程init
4、
init讀取系統引導設定檔/etc/inittab中的資訊進行初始化
/etc/rc.d/rc.sysinit------系統初始化指令碼
/etc/rc.d/rcX.d/[KS]*------根據運行層級佈建服務
/etc/rc.d/rc.local---------執行本地特殊配置
其它---------不同運行層級的特殊服務
Linux啟動運行init程式來啟動相關程式初始化,與啟動相關的一個概念是運行級,運行級是作業系統當前啟動並執行層級,在不同運行層級上可以定義屬於該運行級的啟動程式,系統的運行層級可以在/etc/inittab檔案指定,與運行級相關運行程式通過從源/etc/rc.d/init.d下連結到目的/etc/rcX.d,這裡X為系統的預設運行層級,因此,預設的啟動指令碼放在/etc/rc.d/init.d下。
# 預設的運行級,Linux用到的層級如下:
# 0 - 停機(千萬不要把initdefault 設定為0 )
# 1 -
單一使用者模式
# 2 - 多使用者,但是沒有 NFS
# 3 - 完全多使用者模式
# 4 - 沒有用到
# 5 - X11
# 6 -
重新啟動 (千萬不要把initdefault 設定為6 )
#
對各個運行級的詳細解釋:
0 為停機,機器關閉。
1 為單一使用者模式,就像Win9x 下的安全模式類似。
2 為多使用者模式,但是沒有NFS
支援。
3 為完整的多使用者模式,是標準的運行級。
4
一般不用,在一些特殊情況下可以用它來做一些事情。
例如在膝上型電腦的電池用盡時,可以切換到這個模式來做一些設定。
5 就是 X11 ,進到 X
Window 系統了。
6 為重啟,運行 init 6 機器就會重啟。
如何讓系統在啟動是運行指定程式,根據啟動順序中的第四步,有兩種方式。
一種方式是根據運行層級佈建服務。
一種方式是執行本地特殊配置。
舉例,任務在啟動是運行命令cvslockd:
方式一:
1. 建立自啟動指令碼/etc/rc.d/init.d/cvslockd,內容為:
#!/bin/bash
/usr/local/bin/cvslockd
設定檔案的屬性為可執行:
#chmod +x /etc/rc.d/init.d/cvslockd
2. 查看電腦運行層級,在檔案/etc/inittab裡看到id:5:initdefault:,則此系統運行層級為5。
3. 到/etc/rc5.d目錄下,把你要執行的可執行檔做一個軟串連,而且在命名的時候要以大寫S字母開頭,S之後的數字大小代表執行順序的先後,數字越大越後執行。
#ln
-s /etc/rc.d/init.d/cvslockd /etc/rc5.d/S100cvslockd
#ln -s
/etc/rc.d/init.d/cvslockd /etc/rc0.d/K20cvslockd
方式二:
在/etc/rc.d/rc.local 添加 exec
/usr/local/bin/cvslockd
該方式是在最後啟動cvslockd。
原文參考