Linux開機啟動順序啟動順序及配置開機啟動


Linux:開機啟動順序啟動順序及配置開機啟動

開機啟動順序

1、加載內核

2、啟動 init(/etc/inittab) pid=1

3、系統初始化 /etc/rc.d/rc.sysinit

4、運行開機啟動 /etc/rc.d/rc*.d #軟鏈指向 /etc/init.d/ 通過 chkconfig 命令配置

5、非系統服務啟動項 /etc/rc.d/rc.local(就是 /etc/rc.local)

6、等待用戶登錄 /sbin/mingetty

1
2
3
4
5
6
7
8
9
10
11

自啟動腳本

1、每個用戶
/etc/profile(/etc/profile.d)登錄時都執行 # 環境變量
/etc/bashrc 運行bash shell時執行此文件

2、特定用戶
~/.bash_profile 登錄時 ~/.profile(Debian)
~/.bashrc 登錄時以及每次打開新的 shell 時
~/.bash_logout 每次退出系統(退出bash shell)時,執行該文

1
2
3
4
5
6
7
8

參考
Linux 開機(腳本)啟動順序

Linux開機自動加載的幾種方法

(1)編輯文件 /etc/rc.local

vim /etc/rc.local

#!/bin/sh

#This script will be executed after all the other init scripts.
#You can put your own initialization stuff in here if you don't
#want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/etc/init.d/mysqld start #mysql開機啟動
/etc/init.d/nginx start #nginx開機啟動
/etc/init.d/php-fpm start #php-fpm開機啟動
/etc/init.d/memcached start #memcache開機啟動

# 在文件末尾(exit 0之前)加上你開機需要啟動的程序或執行的命令即可
# (執行的程序需要寫絕對路徑,添加到系統環境變量的除外),如:

/usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/etc/thttpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

(2)自己寫一個shell腳本

將寫好的腳本(.sh文件)放到目錄 /etc/profile.d/ 下,
系統啟動后就會自動執行該目錄下的所有shell腳本。

(3)通過chkconfig命令設置

將啟動文件cp到 /etc/init.d/或者/etc/rc.d/init.d/(前者是后者的軟連接)下

vim 啟動文件,文件前面務必添加如下三行代碼,否側會提示chkconfig不支持

#!/bin/sh 告訴系統使用的shell,所以的shell腳本都是這樣
#chkconfig: 35 20 80 分別代表運行級別,啟動優先權,關閉優先權,此行代碼必須
#description: http server(自己隨便發揮)//兩行都注釋掉!!!,此行代碼必須

1
2
3

chkconfig --add 腳本文件名 # 操作后就已經添加了

1

例如

/etc/init.d/rds_start.sh

#!/bin/sh
#chkconfig: 2345 80 90
#description:rds_start.sh
cd /home/softs/rds/bin/
nohup ./rds_start.sh &

1
2
3
4
5

說明:
2345表示系統運行級別是2,3,4或者5時都啟動此服務,
20,是啟動的優先級,
80是關閉的優先級,
如果啟動優先級配置的數太小時如0時,則有可能啟動不成功,
因為此時可能其依賴的網絡服務還沒有啟動,從而導致自啟動失敗。

chmod +x /etc/init.d/auto_start.sh

chkconfig --add rds_start.sh # 添加到系統服務

chkconfig rds_start.sh on # 設置開機啟動
————————————————

CentOS 設置開機自啟動服務
在CentOS或者RedHat其他系統下,如果是后面安裝的服務,如httpd、mysqld、postfix等,安裝后系統默認不會自動啟動的。
就算手動執行 /etc/init.d/mysqld start 啟動了服務,只要服務器重啟后,系統仍然不會自動啟動服務。 在這個時候,我們就需要在安裝后做個設置,讓系統自動啟動這些服務,避免不必要的損失和麻煩
————————————————

一. 實驗環境

CentOS 7.5

方法一:ln -s 建立軟連接

在CentOS中總共有7種運行級別,可以在/etc/inittab 文件中進行設置,7種運行級別對應着 /etc/rc.d/rc[0-6].d 這七個目錄

 

 

 ps: 你可能也發現了在/etc下也有同樣的7個文件夾即 /etc/rc[0-6].d ,通過查看發現/etc/rc[0-6].d其實就是/etc/rc.d/rc[0-6].d的軟連接,只是為了保持和Unix的兼容性

 

 

 這7個目錄對應着7種不同運行級別,也就是說在每一個目錄下的內容表示在該運行級別下應該啟動或者關閉的服務。例如我們看一下/etc/rc.d/rc5.d目錄下的內容

 

 

 

當然你可能也發現了,這些文件是按照如下格式命名的 [KS][1-100]servicename ,它表示當系統的運行級別為5時,它會關掉以K開頭的所有服務,並啟動所有以S開頭的服務,其實,這些服務都是/etc/init.d/中某個服務的軟連接,所以真正啟動的服務是/etc/init.d目錄中的某一個服務,而以K/S開頭建立軟連接是為了表明在對應級別下應該采取的行為,K/S后面緊跟的數字表示開/關服務的優先級。
因此,如果我們自己寫了一個腳本代碼 如cleanupd,需要在開機級別為3的時候自啟動的話,那么我們只需要把可執行的cleanupd腳本文件放到 /etc/init.d目錄下,並在對應的運行級別目錄下 如/etc/rc.d/rc3.d/ 建立一個以S開頭后加數字的軟連接到/etc/init.d/cleanupd即可,如
————————————————
[root@localhost ~]# ln -s /etc/init.d/cleanupd /etc/rc.d/rc3.d/S95cleanup

顯然,這樣的設置方式比較繁瑣,僅僅適合於我們想DIY的腳本服務;

方法2:chkconfig

鑒於上面的手工操作比較繁瑣,在CentOS中專門提供了chkconfig 命令來設置或者取消開機自啟動服務。如,查詢所有開機啟動的服務:

 

 使用chkconfig 或者 chkconfig –list就可以看出當前系統已經設置的各個服務在各個運行級別下的開閉狀態。如果我們想設置某個服務自啟動或者關閉的話,那么只需要按照下面的格式使用即可

chkconfig servicename on/off

如:
1. 查看 sshd

 

 

2. 將 sshd 設置為開機自啟動:

[root@host ~]# chkconfig sshd on

取消 sshd 的開機自啟動,只需要將 on 改為 off 即可:

[root@host ~]# chkconfig sshd off
3.值得注意的是,如果這個服務尚未被添加到 chkconfig 列表中,則現需要使用 –-add 參數將其添加進去:

[root@host ~]# chkconfig --add sshd
4.如果要查詢當前所有自動啟動的服務,可以輸入:

[root@host ~]# chkconfig --list
5.如果只想看指定的服務,只需要在 “–-list” 之后加上服務名就好了,比如查看httpd服務是否為自動啟動:

[root@host ~]# chkconfig --list httpd
[root@host ~]# chkconfig --list httpd
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

此時0~6均為off,則說明httpd服務不會在系統啟動的時候自動啟動。我們輸入:

[root@host ~]# chkconfig httpd on
則此時為:

[root@host ~]# chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
這個時候2~5都是on,就表明會自動啟動了。

方法三:修改 /etc/rc.d/rc.local 這個文件:
例如將 apache、MySQL、samba、svn 等這些服務的開機自啟動問題一起搞定:

vi/etc/rc.d/rc.local

添加以下命令
/usr/sbin/apachectlstart
/etc/rc.d/init.d/mysqldstart
/etc/rc.d/init.d/smbstart
/usr/local/subversion/bin/svnserve-d
————————————————
版權聲明:本文為CSDN博主「Peter_Lv1」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_40606798/java/article/details/82286273

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM