1. 程式人生 > 實用技巧 >Linux入門——啟動和關閉

Linux入門——啟動和關閉

Linux入門——啟動和關閉

摘要:本文主要學習了Linux的啟動和關閉。

配置檔案

說明

在CentOS 7之前可以通過修改inittab配置檔案來修改開機啟動模式。

CentOS 7由於使用systemd而不是init,所以不能通過修改inittab配置檔案來修改開機啟動模式,而是通過命令列。

檔案格式

在Linux系統啟動時,會啟動init程序,init程序會根據/etc/inittab這個檔案,在不同的執行級別啟動相應的程序或執行相應的操作。

在/etc/inittab配置檔案中定義的登記項都是以“:”隔開的四個段,即:

1 id:runlevels:action:process

登記項

id

每個登記項的識別符號,用於唯一標識每個登記項,不能重複。

runlevels

系統的執行級別,表示process的action要在哪個級別下執行,該段中可以定義多個執行級別,各級別之間直接寫不用分隔符,如果為空,表示在所有的執行級別執行。

Linux的執行級別有:

1 0:表示關機,系統預設級別不能設為0,否則不能正常啟動。
2 1:表示單使用者模式,在這個模式中,使用者登入不需要密碼,禁止遠端登入。
3 2:表示多使用者模式,NFS服務不開啟,沒有網路服務。
4 3:表示完全的多使用者模式,有NFS服務,登入進入命令列模式。
5 4:這個模式保留未用。
6 5:表示圖形使用者模式,登入進入圖形介面。
7 6:表示重啟系統,系統預設級別不能設為6,否則不能正常啟動。

最常用到的是3和5。

action

表示對應登記項的process在一定條件下所要執行的動作。

具體動作有:

 1 respawn:當process終止後馬上啟動一個新的process。
 2 wait:當進入指定的runlevels後process才會啟動一次,並且到離開這個runlevels終止。
 3 initdefault:設定預設的執行級別,即我們開機之後預設進入的執行級別,不能是0和6,你懂的。
 4 sysinit:系統初始化,只有系統開機或重新啟動的時候,這個process才會被執行一次。
 5 powerwait:當init接收到電源失敗訊號的時候執行相應的process,並且如果init有程序在執行,會等待這個程序完成之後,再執行相應的process。
6 powerfail:當init接收到電源失敗訊號的時候執行相應的process,並且如果init有程序在執行,不會等待這個程序完成,它會直接執行相應的process。 7 powerokwait:電源已經故障,但是在等待執行對應操作的時候突然來電了就執行對應的process。 8 powerfailnow:當電源故障並且init被通知UPS電源已經快耗盡執行相對應的process。 9 ctrlaltdel:當用戶按下ctrl+alt+del這個組合鍵的時候執行對應的process。 10 boot:只有在引導過程中,才執行該程序,但不等待該程序的結束,當該程序死亡時,也不重新啟動該程序。 11 bootwait:只有在引導過程中,才執行該程序,並等待程序的結束,當該程序死亡時,也不重新啟動該程序。 12 off:如果process正在執行,那麼就發出一個警告訊號,等待20秒後,再通過殺死訊號強行終止該process。如果process並不存在那麼就忽略該登記項。 13 once:啟動相應的程序,但不等待該程序結束便繼續處理/etc/inittab檔案中的下一個登記項,當該程序死亡時,init也不重新啟動該程序。

process

表示啟動哪個程式或指令碼或執行哪個命令等。

檢視

CentOS 7之前的配置檔案:

 1 [root@localhost ~]#
 2 #
 3 # inittab This file describes how the INIT process should set up
 4 # the system in a certain run-level.
 5 #
 6 # Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
 7 # Modified for RHS Linux by Marc Ewing and Donnie Barnes
 8 #
 9 
10 # Default runlevel. The runlevels used by RHS are:
11 # 0 - halt (Do NOT set initdefault to this)
12 # 1 - Single user mode
13 # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
14 # 3 - Full multiuser mode
15 # 4 - unused
16 # 5 - X11
17 # 6 - reboot (Do NOT set initdefault to this)
18 # 
19 id:3:initdefault:
20 
21 # System initialization.
22 si::sysinit:/etc/rc.d/rc.sysinit
23 ...
24 [root@localhost ~]#

CentOS 7的配置檔案:

 1 [root@localhost ~]# cat /etc/inittab
 2 # inittab is no longer used when using systemd.
 3 #
 4 # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
 5 #
 6 # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
 7 #
 8 # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
 9 #
10 # multi-user.target: analogous to runlevel 3
11 # graphical.target: analogous to runlevel 5
12 #
13 # To view current default target, run:
14 # systemctl get-default
15 #
16 # To set a default target, run:
17 # systemctl set-default TARGET.target
18 #
19 [root@localhost ~]#

命令列

在CentOS 7中,可以使用命令列來設定執行級別。

檢視當前執行級別:

1 systemctl get-default

設定當前執行級別為3,開機為命令列模式:

1 systemctl set-default multi-user.target

設定當前執行級別為5,開機為圖形介面:

1 systemctl set-default graphical.target

啟動過程

加電自檢

當計算機開啟電源後,首先是BIOS開機自檢,按照BIOS中設定的啟動裝置(通常是硬碟)來啟動。

核心引導

作業系統接管硬體以後,首先讀入“/boot”目錄下的核心檔案。

執行init

init程序是系統所有程序的起點,你可以把它比擬成系統所有程序的老祖宗,沒有這個程序,系統中任何程序都不會啟動。

init程式首先是需要讀取配置檔案/etc/inittab。

啟動程序

init程序會根據配置檔案的執行級別啟動相應的程序。

系統初始化

在init的配置檔案中呼叫執行了/etc/rc.d/rc.sysinit,而rc.sysinit是一個指令碼,它主要是完成一些系統初始化的工作,rc.sysinit是每一個執行級別都要首先執行的重要指令碼。

它主要完成的工作有:啟用交換分割槽,檢查磁碟,載入硬體模組以及其它一些需要優先執行任務。

建立終端

rc執行完畢後,返回init。這時基本系統環境已經設定好了,各種守護程序也已經啟動了。

init接下來會開啟6個終端,以便使用者登入系統。

使用者登入系統

一般來說,使用者的登入方式有三種:

(1)命令列登入

(2)ssh登入

(3)圖形介面登入

關閉系統

說明

在Linux領域內大多用在伺服器上,很少遇到關機的操作。畢竟伺服器上跑一個服務是永無止境的,除非特殊情況下,不得已才會關機。

正確的關機流程為:

1 sync > shutdown > reboot > halt

不管是重啟系統還是關閉系統,首先要執行sync命令,把記憶體中的資料寫到磁碟中。

命令

sync

將資料由記憶體同步到硬碟中。

同步:

1 [root@localhost ~]# sync

shutdown

關機指令。

立馬關機:

1 [root@localhost ~]# shutdown –h now

在今天20:25關機:

1 [root@localhost ~]# shutdown –h 20:25

十分鐘後關機:

1 [root@localhost ~]# shutdown –h +10

立馬重啟:

1 [root@localhost ~]# shutdown –r now

十分鐘後重啟:

1 [root@localhost ~]# shutdown –r +10

reboot

重啟,等同於“shutdown –r now”。

重啟:

1 [root@localhost ~]# reboot

poweroff

關閉系統,等同於“shutdown –h now”。

關閉:

1 [root@localhost ~]# poweroff

halt

關閉系統,等同於“shutdown –h now”和“poweroff”

關閉:

1 [root@localhost ~]# halt

init

執行指定程序。

關閉:

1 [root@localhost ~]# init 0

重啟:

1 [root@localhost ~]# init 6