Linux 學習筆記(9)

九、 運行級別
1 Linux 系統的運行級別 (runlevel)
Linux 系統有 7 個運行級別, Linux 系統任何時候都運行在一個指定的運行級別上,不同的運行級
別所運行的程序和服務不盡相同,所要完成的工作和要達到的目的也不相同
· 運行級別 0 系統停機 (halt) 狀態,系統的默認運行級別不能設為 0 ,否則不能正常啟動
· 運行級別 1 單用戶工作 (single user) 狀態, root 權限,用于系統維護,禁止遠程登陸
· 運行級別 2 多用戶 (multiuser) 狀態 ( 沒有 NFS)
· 運行級別 3 完全的多用戶 (multiuser) 狀態 ( NFS) ,登陸后進入控制臺命令行模式
· 運行級別 4 系統未使用,保留
· 運行級別 5 X11 控制臺 (xdm gdm kdm) ,登陸后進入圖形 GUI 模式 · 運行級別 6 系統正常關閉并重啟 (reboot) ,默認運行級別不能設為 6 ,否則不能正常啟動
2 、運行級別的原理
在目錄 /etc/rc.d/init.d 下有許多服務器腳本程序,一般稱為服務 (service) , 在 /etc/rc.d
7 個名為 rcN.d 的目錄,其中 N=0-6 ,對應于系統的 7 個運行級別, rcN.d 目錄下,都是
一些符號鏈接文件,這些鏈接文件都指向 init.d 目錄下的 service 腳本文件,這些鏈接文件的命
名規則是 "K+nn+ 服務名 " "S+nn+ 服務名 " ,其中 nn 2 位數字:
: rc3.d 目錄下的鏈接文件 S80sendmail 就指向 service 腳本文件 ../init.d/sendmail
系統會根據指定的 runlevel 進入對應的 rcN.d 目錄,并按照文件名順序檢索目錄下的鏈接文件
? 對于以 K 為開頭的鏈接文件,系統將終止對應的服務
? 對于以 S 為開頭的鏈接文件,系統將啟動對應的服務
通過這種方式來實現 " 不同的運行級別運行不同的程序和服務 "
3 /etc/inittab 配置文件詳解
init 的進程號是 1 ,從這一點就能看出, init 進程是系統所有進程的起點, Linux 在完成核內引導以后,
就開始運行 init 程序, init 程序需要讀取設置文件 /etc/inittab inittab 是個不可執行的文本文件,他有若
干行指令所組成。在 Redhat 系統中, inittab 的內容如下所示 ( 以“ ###" 開始的中注釋為筆者增加的 )
如果你改變了 inittab 文件,那么要使他立即生效,需要使用一個命令: init q
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
### 表示當前缺省運行級別為 5(initdefault)
id:5:initdefault:
### 啟動時自動執行 /etc/rc.d/rc.sysinit 腳本 (sysinit)
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
### 當運行級別為 5 時,以 5 為參數運行 /etc/rc.d/rc 腳本, init 將等待其返回 (wait)
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
### 在啟動過程中允許按 CTRL-ALT-DELETE 重啟系統
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
### 2 3 4 5 級別上以 ttyX 為參數執行 /sbin/mingetty 程序,打開 ttyX 終端用于用戶登錄,
### 如果進程退出則再次運行 mingetty 程序 (respawn)
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
### 5 級別上運行 xdm 程序,提供 xdm 圖像方式登錄界面,并在退出時重新執行 (respawn)
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
以上面的 inittab 文件為例,來說明一下 inittab 的格式。其中以 # 開始的行是注釋行,除了注釋行之
外,每一行都有以下格式:
id:runlevel:action:process
對上面各項的周詳解釋如下:
1. id
id 是指入口標識符,他是個字符串,對于 getty mingetty 等其他 login 程序項,需求 id tty 的編
號相同,否則 getty 程序將不能正常工作。
2. runlevel
runlevel init 所處于的運行級別的標識,一般使用 0 6 S s 0 1 6 運行級別被系統保留:
其中 0 作為 shutdown 動作, 1 作為重啟至單用戶模式, 6 為重啟; S s 意義相同,表示單用戶模式,
且無需 inittab 文件,因此也不在 inittab 中出現,實際上,進入單用戶模式時, init 直接在控制臺
/dev/console )上運行 /sbin/sulogin 。在一般的系統實現中,都使用了 2 3 4 5 幾個級別,在 Redhat
系統中, 2 表示無 NFS 支持的多用戶模式, 3 表示完全多用戶模式(也是最常用的級別), 4 保留給用戶
自定義, 5 表示 XDM 圖像登錄方式。 7 9 級別也是能使用的,傳統的 Unix 系統沒有定義這幾個級別。
runlevel 能是并列的多個值,以匹配多個運行級別,對大多數 action 來說,僅當 runlevel 和當前運行級
別匹配成功才會執行。
3. action
action 是描述其后的 process 的運行方式的。 action 可取的值包括: initdefault sysinit boot bootwait
等:
initdefault 是個特別的 action 值,用于標識缺省的啟動級別;當 init 由核心激活以后,他將讀取 inittab
中的 initdefault 項,取得其中的 runlevel ,并作為當前的運行級別。如果沒有 inittab 文件,或其中沒有
initdefault 項, init 將在控制臺上請求輸入 runlevel
sysinit boot bootwait action 將在系統啟動時無條件運行,而忽略其中的 runlevel
其余的 action (不含 initdefault )都和某個 runlevel 相關。各個 action 的定義在 inittab man 手冊
中有周詳的描述。
4. process
process 為具體的執行程序。程序后面能帶參數。
第三部分:系統初始化
init 的設置文件中有這么一行:
si::sysinit:/etc/rc.d/rc.sysinit
他調用執行了 /etc/rc.d/rc.sysinit ,而 rc.sysinit 是個 bash shell 的腳本,他主要
init 的設置文件中有這么一行:
si::sysinit:/etc/rc.d/rc.sysinit
他 調用執行了 /etc/rc.d/rc.sysinit ,而 rc.sysinit 是個 bash shell 的腳本,他主要是完成一些系統初始化的
工作, rc.sysinit 是每一個運行級別都要首先運行的重要腳本。他主要完成的工作有:激活交換分區,檢
查磁盤,加載硬件模塊及其他一些需要優先執行任務。 rc.sysinit 約有 850 多行,不過每個單一的功能還是比較簡單,而且帶有注釋,建議有興趣的用戶能自行
閱讀自己機器上的該文件,以了解系統初始化所周詳情況。由于此文件較長,所以不在本文中列出來,
也不做具體的介紹。
rc.sysinit 程序執行完畢后,將返回 init 繼續下一步。
第四部分:啟動對應運行級別的守護進程
rc.sysinit 執行后,將返回 init 繼續其他的動作,通常接下來會執行到 /etc/rc.d/rc 程序。以運行級別 5
為例, init 將執行設置文件 inittab 中的以下這行:
l5:5:wait:/etc/rc.d/rc 5
這一行表示以 5 為參數運行 /etc/rc.d/rc /etc/rc.d/rc 是個 Shell 腳本,他接受 5 作為參數,去執行 /etc/rc.d
/rc5.d/ 目錄下的所有的 rc 啟動腳本, /etc/rc.d/rc5.d/ 目錄中的這些啟動腳本實際上都是一些鏈接文件,
而不是真正的 rc 啟動腳本,真正的 rc 啟動腳本實際上都是放在 /etc/rc.d/init.d/ 目錄下。而這些 rc 啟動
腳本有著類似的用法,他們一般能接受 start stop restart status 等參數。
/etc/rc.d/rc5.d/ 中的 rc 啟動腳本通常是 K S 開頭的鏈接文件,對于以以 S 開頭的啟動腳本,將以 start
參數來運行。而如果發現存在相應的腳本也存在 K 打頭的鏈接,而且已處于運行態了 ( /var/lock/subsys/
下的文件作為標志 ) ,則將首先以 stop 為參數停止這些已啟動了的守護進程,然后再重新運行。這樣做
是為了確保是當 init 改動運行級別時,所有相關的守護進程都將重啟。
至于在每個運行級中將運行哪些守護進程,用戶能通過 chkconfig setup 中的 "System Services" 來自行
設定。常見的守護進程有:
amd :自動安裝 NFS 守護進程
apmd: 高級電源管理守護進程
arpwatch :記錄日志并構建一個在 LAN 接口上看到的以太網地址和 IP 地址對數據庫
autofs :自動安裝管理進程 automount ,和 NFS 相關,依賴于 NIS
crond Linux 下的計劃任務的守護進程
named DNS 服務器
netfs :安裝 NFS Samba NetWare 網絡文件系統
network :激活已設置網絡接口的腳本程序
nfs :打開 NFS 服務
portmap RPC portmap 管理器,他管理基于 RPC 服務的連接
sendmail :郵件服務器 sendmail
smb Samba 文件共享 / 打印服務
syslog :一個讓系統引導時起動 syslog klogd 系統日志守候進程的腳本
xfs X Window 字型服務器,為本地和遠程 X 服務器提供字型集
Xinetd :支持多種網絡服務的核心守護進程,能管理 wuftp sshd telnet 等服務
這些守護進程也啟動完成了, rc 程序也就執行完了,然后又將返回 init 繼續下一步。
第五部分:建立終端
rc 執行完畢后,返回 init 。這時基本系統環境已設置好了,各種守護進程也已啟動了。 init 接下來會打
6 個終端,以便用戶登錄系統。通過按 Alt+Fn(n 對應 1-6) 能在這 6 個終端中轉換。在 inittab 中的以下
6 行就是定義了 6 個終端:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6 從上面能看出在 2 3 4 5 的運行級別中都將以 respawn 方式運行 mingetty 程序, mingetty 程序能打
開終端、設置模式。同時他會顯示一個文本登錄界面,這個界面就是我們經常看到的登錄界面,在這個
登錄界面中會提示用戶輸入用戶名,而用戶輸入的用戶將作為參數傳給 login 程序來驗證用戶的身份。
第六部分:登錄系統,啟動完成
對于運行級別為 5 的圖像方式用戶來說,他們的登錄是通過一個圖像化的登錄界面。登錄成功后能直接
進入 KDE Gnome 等窗口管理器。而本文主要講的還是文本方式登錄的情況:
當我們看到 mingetty 的登錄界面時,我們就能輸入用戶名和密碼來登錄系統了。
Linux 的賬號驗證程序是 login login 會接收 mingetty 傳來的用戶名作為用戶名參數。然后 login
對用戶名進行分析:如果用戶名不是 root ,且存在 /etc/nologin 文件, login 將輸出 nologin 文件的內容,
然后退出。這通常用來系統維護時防止非 root 用戶登錄。只有 /etc/securetty 中登記了的終端才允許 root
用戶登錄,如果不存在這個文件,則 root 能在所有終端上登錄。 /etc /usertty 文件用于對用戶作出附加
訪問限制,如果不存在這個文件,則沒有其他限制。
在分析完用戶名后, login 將搜索 /etc/passwd /etc/shadow 來驗證密碼及設置賬戶的其他信息,比如:
主目錄是什么、使用何種 shell 。如果沒有指定主目錄,將默認為根目錄;如果沒有指定 shell ,將默認
/bin/bash
login 程序成功后,會向對應的終端在輸出最近一次登錄的信息 ( /var/log/lastlog 中有記錄 ) ,并檢查用
戶是否有新郵件 ( /usr/spool /mail/ 的對應用戶名目錄下 ) 。然后開始設置各種環境變量:對于 bash 來說,
系統首先尋找 /etc/profile 腳本文件,并執行他;然后如果用戶的主目錄中存在 .bash_profile 文件,就執
行他,在這些文件中又可能調用了其他設置文件,所有的設置文件執行后后,各種環境變量也設好了,
這時會出現大家熟悉的命令行提示符,到此整個啟動過程就結束了。
4 、相關命令
4.1 、查看當前系統運行等級
[root@test ~]# runlevel
N 5
//’N’ 代表先前的 Runlevel; ‘5’ 代表目前的 Runlevel
4.2 、切換系統運行等級
#init N
// 切換到運行級別 N
# init 0
// 關機
# init 6
// 重啟動系統

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716990.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716990.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716990.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RH850P1X芯片學習筆記-Generic Timer Module -ATOM

文章目錄 ARU-connected Timer Output Module (ATOM)OverviewGLOBAL CHANNEL CONTROL BLOCK ATOM Channel architectureATOM Channel modesSOMP-Signal Output Mode PWMSOMP - ARUSOMC-Signal Output Mode CompareSOMC - ARUSOMC – COMPARE COMMANDSOMC – OUTPUT ACTIONATOM …

Python縮進規則

Python的縮進規則是Python語法中非常重要的一部分&#xff0c;也是Python語言獨特的特點之一。在Python中&#xff0c;縮進被用來表示代碼塊的層次結構&#xff0c;而不是像其他語言一樣使用大括號或關鍵詞。這種縮進規則使得Python代碼更加簡潔、易讀、易于理解&#xff0c;同…

python模塊百科_操作系統接口_os【一】

python模塊百科_操作系統接口_os【一】 os --- 多種操作系統接口一、相關模塊1.1 os.path 文件路徑1.2 fileinput 文件讀取1.3 tempfile 臨時文件和目錄1.4 shutil 高級文件和目錄1.5 platform 操作系統底層模塊 二、關于函數適用性的說明2.1 與操作系統相同的接口2.2 支持字節…

Git版本管理常用指令

Git常用命令 一、基本指令二、本地倉庫管理三、遠程倉庫管理四、分支管理五、儲藏區六、標簽管理一、基本指令 查看Git安裝版本:git --version 查看log指令的幫助信息:git log --help 配置Git用戶名:git config --global user.name “xxxxx” 配置Git郵箱: git config --…

2024年騰訊云新用戶優惠券領取入口及使用教程

隨著云計算技術的不斷發展和普及&#xff0c;越來越多的個人和企業選擇使用云服務。騰訊云作為國內領先的云服務提供商&#xff0c;為了吸引新用戶&#xff0c;經常推出各種優惠活動&#xff0c;其中就包括新用戶專屬優惠券&#xff0c;本文將為大家分享騰訊云新用戶優惠券的領…

5個好玩神奇還免費的工具網站收藏不后悔-搜嗖工具箱

生命倒計時 http://www.thismuchlonger.com 這是一個相哇塞的網站&#xff0c;可以讓我們靜下心來好好想想我們來這個世界究竟為了什么&#xff0c;因為當我們作為命運的主宰者。敲打鍵盤設定好自己一生長度的時候&#xff0c;我們的剩余壽命已經成絕對值&#xff0c;一旦生命…

創建型模式之原型模式

一、概述 1、工作原理&#xff1a;將一個原型對象傳給要發動創建的對象(即客戶端對象),這個要發動創建的對象通過請求原型對象復制自己來實現創建過程 2、通過克隆方法所創建的對象是全新的對象&#xff0c;它們在內存中擁有新的地址&#xff0c;每一個克隆對象都是獨立的 3…

MySQL 中的 varchar 和 char 有什么區別?MySQL中 in 和 exists 區別?

MySQL 中的 varchar 和 char 有什么區別&#xff1f; char 是一個定長字段,假如申請了char(10)的空間,那么無論實際存儲多少內容.該字段都占用 10 個字符,而 varchar 是變長的,也就是說申請的只是最大長度,占用的空間為實際字符長度1,最后一個字符存儲使用了多長的空間. 在檢索…

李沐動手學習深度學習——3.6練習

本節直接實現了基于數學定義softmax運算的softmax函數。這可能會導致什么問題&#xff1f;提示&#xff1a;嘗試計算exp(50)的大小。 可能存在超過計算機最大64位的存儲&#xff0c;導致精度溢出&#xff0c;影響最終計算結果。 本節中的函數cross_entropy是根據交叉熵損失函數…

JavaScript之數據類型

系列文章目錄 文章目錄 系列文章目錄前言 前言 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站&#xff0c;這篇文章男女通用&#xff0c;看懂了就去分享給你的碼吧。 數據類型   Java…

20.圖

圖的基本概念 1.圖的定義 由頂點和邊組成的集合&#xff0c;G(V,E) 2.基本概念 鄰接點&#xff1a; 對于無向圖u v來說&#xff0c;uv互為鄰接點 對于有向圖u->v來說&#xff0c;v是u的鄰接點&#xff0c;但u不是v的臨界點 路徑&#xff1a; 一個頂點到另一個頂點所經過的…

從Poincare猜想看中國數學的國際地位

2006年丘成桐學派利用北京晨興數學中心&#xff0c;宣布一名俄國學者Poincare猜想研究中存在錯誤&#xff0c;已經由華裔學者朱熹平和曹懷東糾正過來&#xff0c;但數年以后我發現作為千禧七問題之一的Poincazre猜想&#xff0c;英國克萊數學所還是把1百萬美元獎金送給俄國人。…

藍橋杯:卡片

題目 小藍有很多數字卡片&#xff0c;每張卡片上都是數字0 到9。 小藍準備用這些卡片來拼一些數&#xff0c;他想從1 開始拼出正整數&#xff0c;每拼一個&#xff0c;就保存起來&#xff0c;卡片就不能用來拼其它數了。 小藍想知道自己能從1 拼到多少。 例如&#xff0c;當小…

動態規劃-最長公共子串(c)

動態規劃 動態規劃&#xff08;dynamic programming&#xff09;是一種算法設計方法。基本思想是在對一個問題的多階段決策中&#xff0c;按照某一順序&#xff0c;根據每一步所選決策的不同&#xff0c;會引起狀態的轉移&#xff0c;最后會在變化的狀態中獲取到一個決策序列。…

vs code更新后json文件無法識別通配符 ,編譯多文件失敗的解決辦法

問題描述 在Mac或者LInux上&#xff0c;進行C/C相同路徑下進行多文件編譯時&#xff0c;之前設置好的json文件突然不能解釋通配符&#xff0c;并且將帶有單引號的地址傳給clang&#xff0c;由于*.c被擴在單引號中&#xff0c;clang找不到文件導致失敗。 如果將命令端中的指令復…

云服務器無法Ping通解決

問題: 使用公網IP地址PING云服務器,無法PING通 但是可SSH到服務器,表示通信鏈路是正常的,可能是端口或路徑規則未開放導致 登陸云服務器后臺,進行安全組規則查看,發現ICMP沒有放行 添加允許ICMP連接規則 成功PING通云服務器

LeetCode——二叉樹(Java)

二叉樹 簡介[簡單] 144. 二叉樹的前序遍歷、94. 二叉樹的中序遍歷、145. 二叉樹的后序遍歷二叉樹層序遍歷[中等] 102. 二叉樹的層序遍歷[中等] 107. 二叉樹的層序遍歷 II[中等] 199. 二叉樹的右視圖[簡單] 637. 二叉樹的層平均值[中等] 429. N 叉樹的層序遍歷[中等] 515. 在每個…

Java接口

接口的定義 抽象方法的集合&#xff0c;接口通常以interface來聲明。一個類通過繼承接口的方式&#xff0c;從而來繼承接口的抽象方法。 接口并不是類&#xff0c;編寫接口的方式和類很相似&#xff0c;但是他們屬于不同的概念。類描述的是對象的屬性和方法。接口則包含類要實…

AcWing 4726. 尋找數字

解題思路 在這個二插搜索樹中尋找&#xff0c;4和7數量相等&#xff0c;并且大于n的最小數。 相關代碼 import java.util.*;public class Main {static String s;static List<Integer> res new ArrayList<>();static long n;static long ansLong.MAX_VALUE;publ…

遞歸實現指數型枚舉(c++題解)

題目描述 從 1~n 這 n(n<16) 個整數中隨機選取任意多個&#xff0c;輸出所有可能的選擇方案。 輸入格式 一個整數n。 輸出格式 每行一種方案。同一行內的數必須升序排列&#xff0c;相鄰兩個數用恰好1個空格隔開。對于沒有選任何數的方案&#xff0c;輸出空行。 樣例 …