如何在啟動(dòng)時(shí)執(zhí)行命令
如何在啟動(dòng)時(shí)執(zhí)行某命令或運(yùn)行某程序,試了幾次每每不成功,于是參考一些資料才搞定。
有人建議在.login中執(zhí)行相應(yīng)命令,或在.bashrc(用tcsh shell,在.tcshrc)里寫命令。這是不行的,.login是在用戶登錄時(shí)執(zhí)行,用戶可能在本地?zé)o需登錄,或者在遠(yuǎn)程多個(gè)用戶登錄,多次登錄;而.tcshrc是在shell啟動(dòng)時(shí)執(zhí)行,登錄后用戶一般會(huì)多次打開(kāi)shell,這樣該命令或程序就會(huì)被多次執(zhí)行。
Linux 啟動(dòng)順序:
1、 BIOS自檢
2、 運(yùn)行系統(tǒng)內(nèi)核并檢測(cè)硬件
3、 運(yùn)行系統(tǒng)的第一個(gè)進(jìn)程init
4、 init讀取系統(tǒng)引導(dǎo)配置文件/etc/inittab中的信息進(jìn)行初始化
/etc/rc.d/rc.sysinit------系統(tǒng)初始化腳本
/etc/rc.d/rcX.d/[KS]*------根據(jù)運(yùn)行級(jí)別配置服務(wù)
/etc/rc.d/rc.local---------執(zhí)行本地特殊配置
其它---------不同運(yùn)行級(jí)別的特殊服務(wù)
Linux啟動(dòng)運(yùn)行init程序來(lái)啟動(dòng)相關(guān)程序初始化,與啟動(dòng)相關(guān)的一個(gè)概念是運(yùn)行級(jí),運(yùn)行級(jí)是操作系統(tǒng)當(dāng)前運(yùn)行的級(jí)別,在不同運(yùn)行級(jí)別上可以定義屬于該運(yùn)行級(jí)的啟動(dòng)程序,系統(tǒng)的運(yùn)行級(jí)別可以在/etc/inittab文件指定,與運(yùn)行級(jí)相關(guān)運(yùn)行程序通過(guò)從源/etc/rc.d/init.d下鏈接到目的/etc/rcX.d,這里X為系統(tǒng)的默認(rèn)運(yùn)行級(jí)別,因此,默認(rèn)的啟動(dòng)腳本放在/etc/rc.d/init.d下。
# 缺省的運(yùn)行級(jí),Linux用到的級(jí)別如下:
# 0 - 停機(jī)(千萬(wàn)不要把initdefault 設(shè)置為0 )
# 1 - 單用戶模式
# 2 - 多用戶,但是沒(méi)有 NFS
# 3 - 完全多用戶模式
# 4 - 沒(méi)有用到
# 5 - X11
# 6 - 重新啟動(dòng) (千萬(wàn)不要把initdefault 設(shè)置為6 )
#
對(duì)各個(gè)運(yùn)行級(jí)的詳細(xì)解釋:
0 為停機(jī),機(jī)器關(guān)閉。
1 為單用戶模式,就像Win9x 下的安全模式類似。
2 為多用戶模式,但是沒(méi)有NFS 支持。
3 為完整的多用戶模式,是標(biāo)準(zhǔn)的運(yùn)行級(jí)。
4 一般不用,在一些特殊情況下可以用它來(lái)做一些事情。
例如在筆記本電腦的電池用盡時(shí),可以切換到這個(gè)模式來(lái)做一些設(shè)置。
5 就是 X11 ,進(jìn)到 X Window 系統(tǒng)了。
6 為重啟,運(yùn)行 init 6 機(jī)器就會(huì)重啟。
如何讓系統(tǒng)在啟動(dòng)是運(yùn)行指定程序,根據(jù)啟動(dòng)順序中的第四步,有兩種方式。
一種方式是根據(jù)運(yùn)行級(jí)別配置服務(wù)。
一種方式是執(zhí)行本地特殊配置。
舉例,任務(wù)在啟動(dòng)是運(yùn)行命令cvslockd:
方式一:
1. 建立自啟動(dòng)腳本/etc/rc.d/init.d/cvslockd,內(nèi)容為:
#!/bin/bash
/usr/local/bin/cvslockd
設(shè)置文件的屬性為可執(zhí)行:
#chmod +x /etc/rc.d/init.d/cvslockd
2. 查看計(jì)算機(jī)運(yùn)行級(jí)別,在文件/etc/inittab里看到id:5:initdefault:,則此系統(tǒng)運(yùn)行級(jí)別為5。
3. 到/etc/rc5.d目錄下,把你要執(zhí)行的可執(zhí)行文件做一個(gè)軟連接,而且在命名的時(shí)候要以大寫S字母開(kāi)頭,S之后的數(shù)字大小代表執(zhí)行順序的先后,數(shù)字越大越后執(zhí)行。
#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
該方式是在最后啟動(dòng)cvslockd。
聯(lián)系客服