initd啟動腳本
在Linux Ubuntu系統中設置開機自啟動腳本的方法多種多樣,以下是其中幾種常見的方式:
首先,你可以通過修改/etc/rc.d/rc.local文件來實現開機啟動。將「xinit」或「startx」添加到文件末尾,即可在系統啟動後直接進入X-Window環境。
其次,用戶登錄時,bash會自動運行系統管理員設置的全局登錄腳本,如 /ect/profile 文件。此文件會按順序查找 /.bash_profile、 /.bash_login、 /.profile 等文件,執行第一個找到的。這樣,只需在這些文件中加入指令,即可在用戶登錄時自動啟動特定程序。
退出登錄時,bash會自動運行個人的退出登錄腳本 /.bash_logout。例如,在此腳本中添加「tar -cvzf c.source.tgz *.c」指令,即可實現每次退出登錄時自動備份所有以.c結尾的文件。
此外,Linux系統中有一個名為crond的守護進程,可以周期性地檢查/var/spool/cron目錄下的指令文件,並在設定的時間執行文件中的指令。使用「crontab」命令可以創建、修改、刪除這些指令文件。例如,創建名為「cronFile」的文件,內容為「00 9 23 Jan * HappyBirthday」,執行「crontabcronFile」指令後,系統將在每年1月23日上午9:00自動執行「HappyBirthday」程序。
對於需要在特定時間執行一次的任務,可以使用「at」指令。它類似於crond,但只執行一次。使用「at [ -f file ] time」格式,指定時間執行file文件中的所有指令。也可直接從鍵盤輸入指令。
在Ubuntu中,可以使用「rcconf」或「sysv-rc-conf」命令來設置開機自啟動服務。這兩種方法功能齊全,操作簡單。直接在/etc/rc0.d、~ /etc/rc6.d和/etc/rcS.d目錄下修改文件,通過「S」或「K」前綴控制服務的啟動狀態。
最後,通過「chkconfig」命令可以實現更高級的自啟動管理。例如,使用「chkconfig --level [0123456] [service name] [on|off]」命令,可以指定服務在特定級別下啟動或關閉。使用「chkconfig --list」查看服務的自動啟動狀態,使用「chkconfig --add」添加服務給chkconfig管理。
希望這些信息能幫助你了解如何在Ubuntu系統中設置開機自啟動腳本。若想深入學習Linux運維知識,可以點擊下方的卡片領取免費學習資料。如有興趣,也可以查看相關文章。
『貳』 開機自啟腳本
電腦或服務中鄭器開機都會有一些需要啟動的程序,每次都需要一個一個點擊啟動,耗時耗力,還有可能漏啟動。所以添加一個開機自啟的腳本,腳本中幫我們打開需要啟動的侍孫程序,如Snipaste、FRP客戶端等。
修改 /etc/rc.local 文件,添加啟動服務的命令
先寫好啟動腳本或者啟動命令,事先保證啟動腳本或命令能正常啟動服務,然後將腳本路徑或啟動命令添加至/etc/rc.local文件中,這個方法適合比較簡單的shell腳本。
創建腳本myservice,寫入
將腳本放到/etc/init.d或/etc/rc.d/init.d目錄下,並添加腳本為服務
輸入如下命令調用myservice服務,然後查看/tmp下的test.txt文件發現賣談頌已經寫入了日期。
將myservice服務設置為開機自啟
查看服務是否開機啟動
重啟伺服器,就會執行 systemctl start myservice 命令和 rc.local 中的命令。
編輯腳本
根據實際情況修改Service中的User和ExecStart的屬性,然後將將本放到 /usr/lib/systemd/system/node_exporter.service 路徑下。
設為開機自啟動
systemctl enable node_exporter.service
會將文件路由到 /etc/systemd/system/multi-user.target.wants/ 目錄下
可以通過如下命令查看日誌信息
journalctl -u node_exporter -n 10 -f
『叄』 linux中init的詳細用法是什麼呀
init模塊
一般來說,Linux程序只能用另一個Linux程序啟動。例如,登錄Linux終端程序Mingetty。
但終端程序又由誰啟動呢?在計算機上啟動Linux時,內核裝入並啟動init程序。然後init程序
裝載硬碟和啟動終端程序。登錄終端程序時,它啟動命令行界面Shell。
在計算機上啟動Linux之後,init程序監視任何關閉計算機的信號,如不間斷電源(UPS)發
生的電源故障信號和重新啟動命令。
init是Linux系統操作中不可缺少的程序之一。
所謂的init進程,它是一個由內核啟動的用戶級進程。
內核自行啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等
)之後,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程
(其進程編號始終為1)。
內核會在過去曾使用過init的幾個地方查找它,它的正確位置(對Linux系統來說)
是/sbin/init。如果內核找不到init,它就會試著運行/bin/sh,如果運行失敗,系統的啟動也
會失敗。
一、什麼是INIT:
init是Linux系統操作中不可缺少的程序之一。
所謂的init進程,它是一個由內核啟動的用戶級進程。
內核自行啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等
)之後,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程
(其進程編號始終為1)。
內核會在過去曾使用過init的幾個地方查找它,它的正確位置(對Linux系統來說)
是/sbin/init。如果內核找不到init,它就會試著運行/bin/sh,如果運行失敗,系統的啟動也
會失敗。
二、運行級別
那麼,到底什麼是運行級呢?
簡單的說,運行級就是操作系統當前正在運行的功能級別。這個級別從1到6 ,具有不同的
功能。
不同的運行級定義如下:(可以參考Red Hat Linux 裡面的/etc/inittab)
# 0 - 停機(千萬不能把initdefault 設置為0 )
# 1 - 單用戶模式
# 2 - 多用戶,沒有 NFS
# 3 - 完全多用戶模式(標準的運行級)
# 4 - 沒有用到
# 5 - X11 (xwindow)
# 6 - 重新啟動 (千萬不要把initdefault 設置為6 )
這些級別在/etc/inittab 文件里指定。這個文件是init 程序尋找的主要文件,最先運行的
服務是放在/etc/rc.d 目錄下的文件。在大多數的Linux 發行版本中,啟動腳本都是位於
/etc/rc.d/init.d中的。這些腳本被用ln 命令連接到 /etc/rc.d/rcn.d 目錄。(這里的n 就是
運行級0-6)
三、運行級別的配置
運行級別的配置是在/etc/inittab行內進行的,如下所示:
12 : 2 : wait : / etc / init.d / rc 2
第一個欄位是一個任意指定的標簽;
第二個欄位表示這一行適用於運行那個級別(這里是2);
第三個字 段表示進入運行級別時,init應該運行第四個欄位內的命令一次,而且init應該
等待該命令結束。/etc/init.d/rc命令運行啟動和終止輸入以便進入運行級別2時所需的任何命
令。
第四個欄位中的命令執行設置運行級別時的一切「雜活」。它啟動已經沒有運行的服務,終
止不應該再在新運行級別內運行的服務。根據Linux版本的不同,採用的具體命令也不同,而且
運行級別的配置也是有差別的。
init啟動時,它會在/etc/inittab內查找一個代碼行,這一行指定了默認的運行級別:
id : 2 : initdefault :
你可以要求init在啟動時,進入非默認運行級別,這是通過為內核指定一個「single」或「
emergency」 命令行參數來實現的。比如說,內核命令行參數的指定可通過LILO來執行。這樣一
來,你就可以選擇單用戶模式了(即運行級別1)。
系統正在運行時,telinit命令可更改運行級別。運行級別發生變化時, init 就會
從/etc/inittab運行相應的命令。
四、/etc/inittab中的特殊配置
/etc/inittab中,有幾個特殊的特性,允許init重新激活特殊事件。這些特殊特性都是用第
三個欄位中的特殊關鍵字標記出來的。比如:
1. powerwait
允許init在電源被切斷時,關閉系統。其前提是具有U P S和監視U P S並通知init電源已被
切斷的軟體。
2. ctrlaltdel
允許init在用戶於控制台鍵盤上按下C t r l + A l t + D e l組合鍵時,重新啟動系統。
注意,如果該系統放在一個公共場所,系統管理員可將C t r l + A l t + D e l組合鍵配置為
別的行為,比如忽略等。
3. sysinit
系統啟動時准備運行的命令。比如說,這個命令將清除/tmp。
上面列出的特殊關鍵字尚不完整。其他的關鍵字及其使用詳情,可參考你的inittab手冊頁
。
五、在單用戶模式下引導
一個重要的運行級別就是單用戶模式(運行級別1),該模式中,只有一個系統管理員使用
特定的機器,而且盡可能少地運行系統服務,其中包含登錄。單用戶模式對少數管理任務(比如
在/usr分區上運行fsck)而言,是很有必要的,因為這需要卸載分區,但這是不可能的,除非所
有的服務系統已被殺死。
一個正在運行的系統可以進入單用戶模式,具體做法是利用init,請求運行級別1。內核啟
動時,在內核命令行指定single或emergency關鍵字,就可進入運行級別1了。內核同時也為init
指定命令行, init從關鍵字得知自己不應該採用默認的運行級別(內核命令行的輸入方式和你
啟動系統的方式有關)。
有時,以單用戶模式進行啟動是必要的,這樣一來,用戶在裝入分區之前,或至少在裝入分
散的/usr分區之前,能手工運行fsck(在分散的文件系統上,任何活動都可能使其更為分散,所
以應該盡可能地運行fsck)。
如果自動化的fsck在啟動時失敗了,啟動腳本init的運行將自動進入單用戶模式。這樣做是
為了防止系統使用不連貫的文件系統,這個文件系統是f s c k不能自動修復的。文件系統不連
貫的現象極為少見,而且通常會導致硬碟的不連貫或實驗性的內核釋放,但最好能做到防患於未
然。
由於安全上的考慮,在單用戶模式下,啟動外殼腳本之前,配置得當的系統會要求用戶提供
root密碼。否則,它會簡單地為L I L O輸入合適的一行代碼,以r o o t的身份登錄(當然,如
果/etc/passwd已經由於文件系統的問題而不連貫了,就不適合這里的原則了,為對付這種情況
,你最好隨時准備一張啟動盤)。
不同的運行級有不同的用處,也應該根據自己的不同情形來設置。
例如,如果丟失了root口令,那麼可以讓機器啟動進入單用戶狀態。在啟動後的 lilo 提示
符下輸入:
init=/bin/sh rw 使機器進入運行級1 ,並把 root 文件系統掛為讀寫。他會跳過所有系統
認證,讓你可以使用passwd 程序來改變root口令,然後啟動到一個新的運行級。
『肆』 如何在system/etc/init.d里增加一個開機 運行腳本
1、首先在終端輸入命令:vim /etc/rc.local。
『伍』 安卓如何設置開機啟動某個程序init.rc給你搞定
為了在Android設備開機後自動啟動某個程序,我們可以利用init.rc配置文件來實現。以名為pengd的C語言編寫的程序為例,該程序需要root許可權進行網路操作。
首先,需要解壓ramdisk.img文件,假設名為ramdisk_new。接著,修改init.rc文件。請注意,文件的結尾必須為空行,否則編譯時會出錯。init.rc文件的具體配置方式應參照實際設備廠商提供的SDK中的ramdisk文件。
將程序pengd直接拷貝到設備的bin目錄或其他相關目錄中。重新壓縮ramdisk文件。此時,設備開機後會自動運行pengd程序。
為了驗證程序是否成功啟動,可以使用adb shell命令登錄設備並執行查看進程的命令。
init.rc是init進程啟動的配置腳本,它使用了Android初始化語言編寫。init進程作為Android系統的第一個進程,負責執行初始化任務,如掛載文件系統、初始化屬性系統和Klog、selinux等。init.rc腳本由四種類型的聲明組成:動作、命令、服務和選項。
動作是響應事件的過程,例如在early-init觸發時執行一系列命令。命令在條件觸發後逐條執行。init.rc中的常見觸發條件包括硬體狀態、時間、系統事件等。常見的命令有啟動、停止、重啟服務等。
服務是可執行程序,在特定選項約束下由init程序運行或重啟。服務的啟動和運行行為由選項定義,常用的選項包括啟動時間、運行方式等。
通過合理配置init.rc文件,我們可以在Android設備開機後自動執行特定程序,提高設備的自動化管理效率。
『陸』 啟動腳本是如何工作的
它在不同的系統上可能是完全不一樣的,所以不能認為一個腳本在某個 Linux 發行版上工作正常,於是在 LFS 中也會正常工作。LFS 有自己的一套規則,當然,LFS 也遵守一些公認的標准。
SysVinit(從現在開始我們稱之為"init")以運行級的模式來工作,一般有 7 個運行級(從 0 到 6,實際上可以有更多的運行級,但都是用於特殊情況而且一般使用不到。 參見 init(8) 以獲得更多信息),每個運行級對應於一套設定好的任務,當啟動一個運行級的時候,計算機就需要執行相應的任務。默認的運行級是 3,下面是對不同運行級的描述:
0: 停止計算機
1: 單用戶模式
2: 無網路多用戶模式
3: 有網路多用戶模式
4: 保留作自定義,否則同運行級 3
5: 同運行級 4,一般用於圖形界面(GUI)登錄(如 X 的
xdm 或者KDE 的 kdm)
6: 重新啟動計算機
用來改變運行級的命令是 init [runlevel] ,這里的 [runlevel] 是目標運行級。例如,要重啟計算機,用戶可以運行 init 6 命令,reboot 其實只是這個命令的別名,同樣,halt 命令也只是 init 0 的別名。
在/etc/rc.d 目錄下有一些類似於 rc?.d 的目錄(這里 ? 是運行級的數字)以及 rcsysinit.d ,裡面都包含許多符號鏈接,其中一些以 K 字母開頭,另外一些以 S 字母開頭,這些鏈接名在首字母後面都跟著兩個數字。K 字母的含義是停止(殺死)一個服務,S 字母的含義是啟動一個服務。而數字則確定這些腳本的啟動順序,從 00 到 99(數字越小執行的越早)。當 init 轉換到其它運行級時,一些相應的服務會停止,而另一些服務則會啟動。
真正的腳本則在 /etc/rc.d/init.d 目錄下,它們完成實際工作,符號鏈接都是指向它們的。停止腳本的鏈接和啟動腳本的鏈接都指向 /etc/rc.d/init.d 目錄下同一個腳本,這是因為調用這些腳本時可以使用不同的參數,例如 start, stop, restart, reload, status 當調用 K 鏈接時,相應的腳本用 stop 參數運行;當調用 S 鏈接時,相應的腳本用 start 參數運行。
以下是腳本參數的描述:start啟動服務stop停止服務restart
停止服務,然後再啟動reload
該服務的配置已更新。如果修改了某個服務的配置文件,又不必重啟這個服務的時候,可以使用這個參數。status
顯示服務的狀態,如果服務正在運行,會顯示該服務進程的 PID 。