update-rc.d 更新 Linux 系统启动项 命令 用法详解
探究 Ubuntu 下的 update-rc.d 命令:http://www.linuxdiyf.com/linux/13362.html
Update-rc.d && rc.local 管理 Ubuntu 的開機(jī)啟動(dòng):http://www.linuxdiyf.com/linux/1057.html
通過 update-rc.d 來管理 Ubuntu 系統(tǒng)的自動(dòng)啟動(dòng)程序:http://www.linuxdiyf.com/linux/1056.html
Ubuntu 系統(tǒng) Update-rc.d 命令:http://www.linuxdiyf.com/linux/906.html
openSUSE 下開機(jī)自動(dòng)運(yùn)行腳本命令的方法:http://www.linuxdiyf.com/linux/1975.html
?
?
ssh 服務(wù)開機(jī)自動(dòng)啟動(dòng)
- 1、修改sshd_config文件,命令為:vi /etc/ssh/sshd_config
- 2、將 #PasswordAuthentication no 的注釋去掉,并且將 NO 修改為 YES
- 3、將 #PermitRootLogin yes 的注釋去掉?
- 4、啟動(dòng) SSH 服務(wù),命令為:/etc/init.d/ssh start ?查看狀態(tài):/etc/init.d/ssh status ?停止服務(wù):/etc/init.d/ssh stop
? ? ?也可以使用systemctl命令:systemctl start ssh、systemctl status?ssh、systemctl stop ssh - 5、驗(yàn)證SSH服務(wù)狀態(tài),命令為:/etc/init.d/ssh status
- 6、添加開機(jī)自啟動(dòng) update-rc.d ssh enable 。關(guān)閉則為:update-rc.d ssh disabled 自啟動(dòng)需要重啟生效
?
Ubuntu 或者 Debian系統(tǒng)中 update-rc.d 命令 是 用來更新系統(tǒng)啟動(dòng)項(xiàng)的腳本。這些腳本的鏈接位于/etc/rcN.d/目錄,對(duì)應(yīng)腳本位于/etc/init.d/目錄。在了解 update-rc.d命令之前,你需要知道的是有關(guān)Linux?系統(tǒng)主要啟動(dòng)步驟,以及Ubuntu中運(yùn)行級(jí)別的知識(shí)。
?
?
一、Linux 系統(tǒng)主要啟動(dòng)步驟
?
?
? ? ? ? 即在Linux系統(tǒng)下,一個(gè)Services的啟動(dòng)、停止以及重啟通常是通過/etc/init.d目錄下的腳本來控制的。然而,在啟動(dòng)或改變運(yùn)行級(jí)別時(shí),是在/etc/rcX.d中來搜索腳本。其中X是運(yùn)行級(jí)別的number。當(dāng)你在Debian下安裝一個(gè)新的服務(wù),比如Apache2,安裝完成后,默認(rèn)情況下它會(huì)啟動(dòng),并在下一次重啟后自動(dòng)啟動(dòng)。但是如果你不是一直需要這個(gè)服務(wù),只在需要的時(shí)候啟用它,你可以禁用它。直到你需要使用的時(shí)候,執(zhí)行如下指令: /etc/init.d/apache2 start
要實(shí)現(xiàn)這個(gè)目的,你需要先在/etc/rcX.d目錄中刪除所有apache2的符號(hào)鏈接,但這個(gè)方法操作麻煩,且效率低下。可以使用update-rc.d命令來實(shí)現(xiàn)這個(gè)功能。
?
1、刪除一個(gè)服務(wù)
如果你想手動(dòng)的完全禁用Apache2服務(wù),你需要?jiǎng)h除其中的所有在/etc/rcX.d中的單一鏈路。
但是如果使用update-rc.d,則非常簡(jiǎn)單:
update-rc.d -f apache2 remove
參數(shù) -f 是強(qiáng)制刪除符號(hào)鏈接,即使/etc/init.d/apache2仍然存在。?
Note:這個(gè)命令僅僅禁止該服務(wù),直到該服務(wù)被升級(jí)。
如果你想在服務(wù)升級(jí)后仍然保持被禁用。應(yīng)該執(zhí)行如下的命令:
update-rc.d apache2 stop 80 0 1 2 3 4 5 6 .
?
2、增加一個(gè)服務(wù)
如果你想重新添加這個(gè)服務(wù)并讓它開機(jī)自動(dòng)執(zhí)行,你需要執(zhí)行以下命令:
update-rc.d apache2 defaults
并且可以指定該服務(wù)的啟動(dòng)順序:
update-rc.d apache2 defaults 90
還可以更詳細(xì)的控制start與kill順序:
update-rc.d apache2 defaults 20 80
其中前面的20是start時(shí)的運(yùn)行順序級(jí)別,80為kill時(shí)的級(jí)別。也可以寫成:
update-rc.d apache2 start 20 2 3 4 5 . stop 80 0 1 6 .
其中0~6為運(yùn)行級(jí)別。 update-rc.d命令不僅適用Linux服務(wù),編寫的腳本同樣可以用這個(gè)命令設(shè)為開機(jī)自動(dòng)運(yùn)行
例子:
update-rc.d httpd start 20 2 3 4 5 . stop 20 0 1 6 .
解析:表示在2、3、4、5這五個(gè)運(yùn)行級(jí)別中,由小到大,第20個(gè)開始運(yùn)行ushare;在 0 1 6這3個(gè)運(yùn)行級(jí)別中,第20個(gè)關(guān)閉apachectl。
這是合并起來的寫法,注意它有2個(gè)點(diǎn)號(hào),效果等于下面方法:
update-rc.d httpd defaults
3:設(shè)置啟動(dòng)和關(guān)閉順序?yàn)?0,20,級(jí)別默認(rèn)
update-rc.d <basename> defaults 80 20
?
二、運(yùn)行級(jí)別
?
Ubuntu中的運(yùn)行級(jí)別
- 0(關(guān)閉系統(tǒng))
- 1(單用戶模式,只允許root用戶對(duì)系統(tǒng)進(jìn)行維護(hù)。)
- 2 到 5(多用戶模式,其中3為字符界面,5為圖形界面。)
- 6(重啟系統(tǒng))
切換運(yùn)行級(jí)別
init [0123456Ss] 例如:init 0 命令關(guān)機(jī); init 6 命令重新啟動(dòng)啟動(dòng)項(xiàng)管理工具
sudo install sysv-rc-conf //或者使用帶gui的工具bum sudo sysv-rc-conf?
?
三、update-rc.d命令詳解
從所有的運(yùn)行級(jí)別中刪除指定啟動(dòng)項(xiàng):update-rc.d -f <basename> remove
按指定順序、在指定運(yùn)行級(jí)別中啟動(dòng)或關(guān)閉:update-rc.d <basename> start|stop <order> <runlevels>
實(shí)例:update-rc.d apachectl start 20 2 3 4 5 . stop 20 0 1 6 .
解析:表示在2、3、4、5這五個(gè)運(yùn)行級(jí)別中,由小到大,第20個(gè)開始運(yùn)行apachectl;
? ? ? 在 0 1 6 這3個(gè)運(yùn)行級(jí)別中,第20個(gè)關(guān)閉apachectl。
?? ? ?這是合并起來的寫法,注意它有2個(gè)點(diǎn)號(hào),
?? ? ?效果等于下面方法:update-rc.d apachectl defaults
A啟動(dòng)后B才能啟動(dòng),B關(guān)閉后A才關(guān)閉:
update-rc.d A defaults 80 20
update-rc.d B defaults 90 10
啟動(dòng)和關(guān)閉順序?yàn)?0,級(jí)別默認(rèn):update-rc.d <basename> defaults 90
apache2、nginx、Redis 這些服務(wù)安裝之后,會(huì)隨開機(jī)啟動(dòng),當(dāng)這些服務(wù)并不需要時(shí),就存在cpu和內(nèi)存的浪費(fèi)。
利用 update-rc.d 命令 我們可以實(shí)現(xiàn)啟動(dòng)項(xiàng)的管理。
?
添加啟動(dòng)項(xiàng):
sudo update-rc.d ? apache2 defaults ?
sudo update-rc.d ? nginx defaults ?
sudo update-rc.d ? redis_6379 defaults ?
刪除啟動(dòng)項(xiàng)
sudo update-rc.d -f apache2 remove ?
sudo update-rc.d -f nginx remove ?
sudo update-rc.d -f redis_6379 remove ?
運(yùn)行例子:
$ sudo update-rc.d -f redis_6379 remove ?
[sudo] password for user: ?
?Removing any system startup links for /etc/init.d/redis_6379 ... ?
? ?/etc/rc0.d/K20redis_6379 ?
? ?/etc/rc1.d/K20redis_6379 ?
? ?/etc/rc2.d/S20redis_6379 ?
? ?/etc/rc3.d/S20redis_6379 ?
? ?/etc/rc4.d/S20redis_6379 ?
? ?/etc/rc5.d/S20redis_6379 ?
? ?/etc/rc6.d/K20redis_6379 ?
查看/etc/rc*.d/ 目錄下,*20redis_6379 已經(jīng)被刪除,反之會(huì)被添加。
?
?
兩種開機(jī)執(zhí)行腳本的方法
?
很多應(yīng)用程序、服務(wù)需要在機(jī)器啟動(dòng)的時(shí)候自動(dòng)執(zhí)行,這里記錄兩種開機(jī)執(zhí)行腳本的方法
?
1. 修改/etc/rc.local
在/etc/rc.local的exit 0語句之間添加啟動(dòng)腳本。腳本必須具有可執(zhí)行權(quán)限。
vi /etc/rc.local 文本編輯,輸入以下內(nèi)容,存檔即可。 /etc/init.d/ssh start exit 0?
2. 用 update-rc.d 命令添加開機(jī)執(zhí)行腳本
?
update-rc.d命令
此命令用于 安裝 或 移除 System-V 風(fēng)格的初始化腳本連接。腳本是存放在 /etc/init.d/目錄下的,當(dāng)然可以在此目錄創(chuàng)建連接文件連接到存放在其他地方的腳本文件。此命令可以指定腳本的執(zhí)行序號(hào),序號(hào)的取值范圍是 0-99,序號(hào)越大,越遲執(zhí)行。
用法
update-rc.d [-n] [-f] name remove 用于移除腳本。
update-rc.d [-n] name default [NN | SS KK],NN表示執(zhí)行序號(hào)(0-99),SS表示啟動(dòng)時(shí)的執(zhí)行序號(hào),KK表示關(guān)機(jī)時(shí)的執(zhí)行序號(hào),SS、KK主要用于在腳本直接的執(zhí)行順序上有依賴關(guān)系的情況下。
選項(xiàng)
-n:不做任何事情,只顯示將要做的。(預(yù)覽、做測(cè)試)
-f:強(qiáng)制移除符號(hào)連接,即使 /etc/init.d/script-name 仍然存在。
?
流程:
創(chuàng)建要開機(jī)自動(dòng)執(zhí)行的腳本:/home/test/blog/startBlog.sh,
給予可執(zhí)行權(quán)限:chmod +x /home/test/blog/startBlog.sh。
在 /etc/init.d 目錄下創(chuàng)建鏈接文件到前面的腳本: ln -s /home/test/blog/startBlog.sh /etc/init.d/startBlog。
進(jìn)入/etc/init.d目錄,用 update-rc.d 命令將連接文件 startBlog 添加到啟動(dòng)腳本中去:update-rc.d startBlog defaults 99。
其中的99表示啟動(dòng)順序,取值范圍是0-99。序號(hào)越大的越晚執(zhí)行。
移除啟動(dòng)的腳本:update-rc.d -f startBlog remove。
?-f 選項(xiàng)表示強(qiáng)制執(zhí)行。
舉例
update-rc.d startBlog defaults 99:添加一個(gè)啟動(dòng)連接,執(zhí)行序號(hào)是99。
如果執(zhí)行腳本B需要先執(zhí)行腳本A,如下設(shè)置(A的啟動(dòng)順序比B的小,結(jié)束順序比B的大):
update-rc.d script_for_A defaults 80 20
update-rc.d script_for_B defaults 90 10
添加一個(gè)不被其他任何服務(wù)需要的服務(wù):update-rc.d script_name defaults 98 02,
添加一個(gè)需要 開始/結(jié)束 序號(hào)在20的服務(wù)的服務(wù):update-rc.d script_depends_on_service_20 default 21 19。
移除一個(gè)腳本,假定/etc/init.d/目錄下的腳本文件已先被刪除:update-rc.d script_name remove。
移除一個(gè)腳本,不管/etc/init.d/目錄下的腳本文件是否已刪除:update-rc.d -f script_name remove。
?
?
?
總結(jié)
以上是生活随笔為你收集整理的update-rc.d 更新 Linux 系统启动项 命令 用法详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CompletableFuture详解~
- 下一篇: Linux二进制实用工具Binutils