日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux系统的运行定义在,Linux系统运行级管理

發(fā)布時(shí)間:2023/12/10 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux系统的运行定义在,Linux系统运行级管理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

運(yùn)行級(jí)的概念來(lái)自SystemV運(yùn)行級(jí)別將啟動(dòng)過(guò)程分成不同的集合每個(gè)集合包含一

組腳本當(dāng)init程序切換運(yùn)行級(jí)到對(duì)應(yīng)的級(jí)別時(shí)相應(yīng)的腳本就被觸發(fā)切換運(yùn)行

級(jí)可以通過(guò)執(zhí)行init[級(jí)別號(hào)]完成(比如在Linux中runlevel代表reboot所

以執(zhí)行init就會(huì)引起系統(tǒng)重新啟動(dòng))

下面是一個(gè)標(biāo)準(zhǔn)的Linux的/etc/inittab注意這里解釋的內(nèi)容來(lái)自redhat但是其他的

版本也大同小異我們將它分成若干段來(lái)解釋如同一般情況那樣用#開(kāi)始的行是注釋

而非注釋行的語(yǔ)法是

標(biāo)號(hào)運(yùn)行級(jí)別操作方式命令

標(biāo)號(hào)是這一行的標(biāo)簽運(yùn)行級(jí)別用于定義這一行應(yīng)該用于那些級(jí)別如果為空就定義

為所有級(jí)別操作方式可以是一些確定的字符串代表如何執(zhí)行后面的命令而命令則

給處在進(jìn)入這一級(jí)別時(shí)執(zhí)行的程序

下面是它的內(nèi)容

#DefaultrunlevelTherunlevelsusedbyRHSare:

#halt(DoNOTsetinitdefaulttothis)

#Singleusermode

#MultiuserwithoutNFS(Thesameasifyoudonothavenetworking)

#Fullmultiusermode

#unused

#X

#reboot(DoNOTsetinitdefaulttothis)

#

上面的幾行解釋了缺省的運(yùn)行級(jí)別定義

停機(jī)系統(tǒng)進(jìn)入這一級(jí)別后關(guān)機(jī)

單用戶模式在這個(gè)模式中只能從控制臺(tái)操作計(jì)算機(jī)網(wǎng)絡(luò)和終端不啟動(dòng)許多文件

系統(tǒng)也沒(méi)有連結(jié)

多用戶模式但關(guān)閉了網(wǎng)絡(luò)服務(wù)支持

完全的多用戶模式就是我們一般使用的模式

無(wú)定義

圖形界面模式系統(tǒng)切入這一運(yùn)行級(jí)后自動(dòng)啟動(dòng)XWindow系統(tǒng)

重新啟動(dòng)

這些級(jí)別的定義是任意的然而你最好不要修改它尤其是level和因?yàn)樵S多

程序都使用init之類的方式實(shí)現(xiàn)對(duì)系統(tǒng)的控制其他的Linux發(fā)行版本可能會(huì)更改

的定義你需要參考/etc/inittab才能判斷到底那個(gè)級(jí)別是什么意思不過(guò)一般來(lái)說(shuō)

和6總是上面的定義

下面開(kāi)始才是真正的內(nèi)容首先系統(tǒng)必須定義缺省的運(yùn)行級(jí)別

id::initdefault:

initdefault關(guān)鍵字決定了缺省的運(yùn)行級(jí)別在這里是也就是在執(zhí)行了公共的系統(tǒng)

啟動(dòng)腳本之后系統(tǒng)將會(huì)執(zhí)行與級(jí)別對(duì)應(yīng)的那些行

#Systeminitialization

si::sysinit:/etc/rcd/rcsysinit

這里的sysinit關(guān)鍵字定義了公共的系統(tǒng)初始化腳本在相應(yīng)于運(yùn)行級(jí)的地方是空

表示適用于所有運(yùn)行級(jí)別注意它將在系統(tǒng)進(jìn)入任何運(yùn)行級(jí)別以前完成一會(huì)我們?cè)?/p>

研究這個(gè)腳本的內(nèi)容

l::wait:/etc/rcd/rc

l::wait:/etc/rcd/rc

l::wait:/etc/rcd/rc

l::wait:/etc/rcd/rc

l::wait:/etc/rcd/rc

l::wait:/etc/rcd/rc

l::wait:/etc/rcd/rc

這里開(kāi)出了六個(gè)運(yùn)行級(jí)別的定義運(yùn)行級(jí)就去執(zhí)行命令/etc/rcd/rc運(yùn)行級(jí)是

/etc/rcd/rc諸如此類wait關(guān)鍵字表示系統(tǒng)必須等待此命令執(zhí)行完才能開(kāi)始

下一步工作

#Thingstorunineveryrunlevel

ud::once:/sbin/update

這又是一個(gè)適用于所有級(jí)別的命令update命令實(shí)際是去啟動(dòng)updated守護(hù)進(jìn)程以便

定期刷新內(nèi)存中的超級(jí)塊表Once關(guān)鍵字說(shuō)明這個(gè)項(xiàng)只被執(zhí)行一次

#TrapCTRLALTDELETE

ca::ctrlaltdel:/sbin/shutdowntrnow

ctrlaltdel定義當(dāng)熱啟動(dòng)組合鍵被觸發(fā)時(shí)系統(tǒng)的行為這里定義所有的運(yùn)行級(jí)別對(duì)它

的響應(yīng)都是重新啟動(dòng)(shutdown–r)

pf::powerfail:/sbin/shutdownfh+"PowerFailure;SystemShuttingDown

"

pr::powerokwait:/sbin/shutdownc"PowerRestored;ShutdownCancelled

"

這兩行定義如何響應(yīng)ups信息如果系統(tǒng)掉電(powerfail)執(zhí)行兩分鐘后關(guān)機(jī)的指令

如果關(guān)機(jī)之前電源恢復(fù)取消關(guān)機(jī)操作

#Rungettysinstandardrunlevels

::respawn:/sbin/mingettytty

::respawn:/sbin/mingettytty

::respawn:/sbin/mingettytty

::respawn:/sbin/mingettytty

::respawn:/sbin/mingettytty

::respawn:/sbin/mingettytty

都是多用戶級(jí)別為系統(tǒng)開(kāi)出個(gè)虛擬屏幕(就是用Alt+Fn即獲得虛擬屏幕)

respawn關(guān)鍵字表示這個(gè)動(dòng)作在每次進(jìn)入相應(yīng)運(yùn)行級(jí)別時(shí)都會(huì)執(zhí)行

#Runxdminrunlevel

#xdmisnowaseparateservice

x::respawn:/etc/X/prefdmnodaemon

對(duì)于級(jí)別啟動(dòng)圖形界面

歸納一下系統(tǒng)在讀入inittab以后要做什么?設(shè)置Ctrl+Alt+Del響應(yīng)設(shè)置好對(duì)UPS

的支持然后應(yīng)該執(zhí)行/etc/rcd/rcsysinit然后是/etc/rcd/rc最后是update

和啟動(dòng)虛擬屏幕顯然系統(tǒng)的主要初始化命令應(yīng)該在/etc/rcd/rcsysinit和/etc/r

cd/rc中完成

rcd下的基本腳本

下面我們來(lái)研究啟動(dòng)腳本這里的腳本來(lái)自redhat因?yàn)檫@是個(gè)最為廣泛使用的

版本其他的版本的特有問(wèn)題將在下一節(jié)討論

首先系統(tǒng)將執(zhí)行/etc/rcd/rcsysinit這是個(gè)shell腳本你可以用普通的文本編

輯工具對(duì)它進(jìn)行處理為了簡(jiǎn)便我們只研究其中較為重要的部分或者較為典型的段落

#!/bin/sh

#

#/etc/rcd/rcsysinitrunonceatboottime

#

#TakeninpartfromMiquelvanSmoorenburgsbcheckrc

#

#Rerunourselvesthroughinitlog

if[z"$IN_INITLOG"];then

[f/sbin/initlog]&&exec/sbin/initlog$INITLOG_ARGSr/etc/rcd/rc

sysinit

fi

首先確定系統(tǒng)中是否存在/sbin/initlog文件如果存在那么需要記錄初始化信息

#Setthepath

PATH=/bin:/sbin:/usr/bin:/usr/sbin

exportPATH

設(shè)置缺省路徑

#Readinconfigdata

if[f/etc/sysconfig/network];then

/etc/sysconfig/network

else

NETWORKING=no

HOSTNAME=localhost

fi

這一段是網(wǎng)絡(luò)的參數(shù)設(shè)置/etc/sysconfig/network的內(nèi)容是這樣

NETWORKING=yes

FORWARD_IPV="yes"

HOSTNAME="openlabasnceducn"

GATEWAY=""

GATEWAYDEV=""

顯然如果這個(gè)文件存在那么設(shè)置網(wǎng)絡(luò)的運(yùn)行參數(shù)如域名網(wǎng)關(guān)等等這個(gè)文件

中可以包含很多的東西詳細(xì)的內(nèi)容我們?cè)谠O(shè)置網(wǎng)絡(luò)的部分介紹

#Sourcefunctions

/etc/rcd/initd/functions

/etc/rcd/initd是所有的服務(wù)腳本存放的地方而functions是各種服務(wù)腳本需要的

一些參數(shù)的設(shè)置有興趣的話你可以看一看不看也不影響什么

以下有一段是設(shè)置一些顯示信息接下來(lái)是這樣的內(nèi)容

#Mount/proc(doneheresovolumelabelscanworkwithfsck)

action"Mountingprocfilesystem"mountntproc/proc/proc

連結(jié)/proc文件系統(tǒng)應(yīng)該記得/proc是用來(lái)顯示系統(tǒng)狀態(tài)的虛擬文件系統(tǒng)注意acti

on命令的語(yǔ)法它顯示一段提示信息然后去執(zhí)行相應(yīng)的命令

然后的段落有一點(diǎn)意思

#Turnoffsysrq

#if["$MAGIC_SYSRQ"="no"];then

#echo"">/proc/sys/kernel/sysrq

#fi

$MAGIC_SYSRQ=no意味著你決定不使用內(nèi)核調(diào)試腳本必須把系統(tǒng)的內(nèi)核調(diào)試功能關(guān)閉

注意接下來(lái)的處理方法在/proc/sys/kernel下建立一個(gè)名叫sysrq的文件并且設(shè)置

其內(nèi)容為""就關(guān)閉了這項(xiàng)功能這也是在運(yùn)行中打開(kāi)或者關(guān)閉內(nèi)核的某個(gè)功能的標(biāo)準(zhǔn)

方法以后我們會(huì)經(jīng)常看到這樣的例子

接下來(lái)要設(shè)置時(shí)鐘和鍵盤映射表裝入系統(tǒng)字體又是一段冗長(zhǎng)的代碼這里將它省

略反正你總可以在自己的系統(tǒng)上看到他們

#Startupswapping

action"Activatingswappartitions"swapona

swapon–a將讀/etc/fstab文件這個(gè)文件中包含有系統(tǒng)中存在的應(yīng)該自動(dòng)掛接的各

種文件系統(tǒng)的列表同時(shí)也包含了關(guān)于交換分區(qū)的知識(shí)swapon–a將啟動(dòng)其中標(biāo)注的

所有交換分區(qū)

#Setthehostname

action"Settinghostname${HOSTNAME}"hostname${HOSTNAME}

#SettheNISdomainname

if[n"$NISDOMAIN"];then

action"SettingNISdomainname$NISDOMAIN"domainname$NISDOMAIN

else

domainname""

fi

這兩段設(shè)置系統(tǒng)名字我們應(yīng)該記得$HOSTNAME已經(jīng)在/etc/sysconfig/network文件中

設(shè)置過(guò)所以這里的action被執(zhí)行而$NISDOMAIN現(xiàn)在是空字符串所以執(zhí)行后hostna

me被設(shè)置而NIS域名不存在

if[f/fsckoptions];then

fsckoptions=`cat/fsckoptions`

else

fsckoptions=

fi

if[f/forcefsck];then

fsckoptions="f$fsckoptions"

fi

這里是與管理員相關(guān)的行了如果系統(tǒng)的/下將存在/forcefsck文件于是系統(tǒng)自動(dòng)啟

動(dòng)fsck程序去檢查文件系統(tǒng)是否有錯(cuò)誤接下來(lái)是一段關(guān)于是否存在/fastboot文件的判

斷與其大同小異然后系統(tǒng)將會(huì)決定是否啟用PNP方法和處理MAGIC_SYSRQ是類似的

這兩段我們不討論了你可以自己看一下

#Remounttherootfilesystemreadwrite

action"Remountingrootfilesysteminreadwritemode"mountnoremount

rw/

#Add/procto/etc/mtab

mountftproc/proc/proc

檢測(cè)根文件系統(tǒng)完畢后系統(tǒng)重新將/連結(jié)成讀寫方式并且將/proc加入到/etc/mta

b中下面是非常重要的一步如果系統(tǒng)內(nèi)核支持可裝載模塊需要把$USEMODULES變量

設(shè)置成"y"并且設(shè)置模塊的缺省路徑參數(shù)等等然后系統(tǒng)開(kāi)始裝入模塊

#loadsoundmodules

if[n"$USEMODULES"];then

ifgrepsq"^aliassound"/etc/confmodules;then

action"Loadingsoundmodule"modprobesound

fi

fi

當(dāng)這些直接裝入的模塊結(jié)束后為了和以前的方式兼容也為了管理員的方便這個(gè)

腳本試圖去尋找/etc/rcd/rcmodules如果存在就執(zhí)行它

#Loadmodules(forbackwardcompatibilitywithVARs)

if[f/etc/rcd/rcmodules];then

/etc/rcd/rcmodules

fi

顯然你可以將自己的模塊初始化命令加入/etc/rcd/rcmodules使它在啟動(dòng)時(shí)得到

運(yùn)行

完成主要模塊的裝入后系統(tǒng)將開(kāi)始一系列日常工作如檢測(cè)有問(wèn)題的文件系統(tǒng)連

結(jié)所有本地文件系統(tǒng)啟動(dòng)磁盤限額等等如果系統(tǒng)還沒(méi)有被配置那么將啟動(dòng)配置腳

本設(shè)置網(wǎng)絡(luò)超級(jí)用戶口令等等否則對(duì)于已經(jīng)配置好的系統(tǒng)清理記賬文件準(zhǔn)

備進(jìn)行系統(tǒng)工作

當(dāng)一切都完成之后系統(tǒng)按照inittab的設(shè)定進(jìn)入運(yùn)行級(jí)執(zhí)行/etc/rcd/rc

/etc/rcd/rc是一個(gè)很有意思的程序它是一個(gè)shell腳本其行為是這樣根據(jù)提供

給它的參數(shù)它去尋找相應(yīng)的目錄rc${arg}d例如在/etc/rcd/rc執(zhí)行時(shí)它去

查詢/etc/rcd/rcd下的所有文件試圖執(zhí)行那些所有用S或K打頭的腳本凡是用S開(kāi)

頭的腳本它給加上一個(gè)start參數(shù)凡是用K打頭的腳本加上一個(gè)stop參數(shù)執(zhí)行次

序是按照S或K后跟的數(shù)值順序

例如在現(xiàn)在的例子中/etc/rcd/rc下存在一個(gè)Sinet的腳本于是rc腳本去

執(zhí)行Sinetstart而Sinet其實(shí)是到/etc/rcd/initd/inet的一個(gè)符號(hào)連結(jié)其內(nèi)

容是(這里只給出了部分內(nèi)容)

/etc/rcd/initd/functions

/etc/sysconfig/network

if[${NETWORKING}="no"]

then

exit

fi

[f/usr/sbin/inetd]||exit

RETVAL=

#Seehowwewerecalled

case"$"in

start)

echon"StartingINETservices:"

daemoninetd

RETVAL=$?

echo

[$RETVALeq]&&touch/var/lock/subsys/inet

;;

stop)

echon"StoppingINETservices:"

killprocinetd

RETVAL=$?

echo

[$RETVALeq]&&rmf/var/lock/subsys/inet

;;

*)

echo"Usage:inet{start|stop|status|restart|reload}"

exit

esac

exit$REVAL

daemon和killproc是在/etc/rcd/initd/functions里面定義的函數(shù)daemon將命令

當(dāng)成守護(hù)進(jìn)程執(zhí)行killproc則殺掉對(duì)應(yīng)進(jìn)程顯然Sinetstart的結(jié)果是inetd程

序被啟動(dòng)為一個(gè)守護(hù)進(jìn)程

這里的方法是啟動(dòng)服務(wù)進(jìn)程的標(biāo)準(zhǔn)模式例如你要設(shè)置某個(gè)服務(wù)在runlevel被啟動(dòng)

那么你可以自己寫一個(gè)腳本比如說(shuō)mydaemon讓mydaemonstart啟動(dòng)服務(wù)mydaem

onstop停止服務(wù)然后將這個(gè)腳本復(fù)制到/etc/rcd/initd中接著在/etc/rcd/rc?

d中建立連接在rcd中連結(jié)為Smydaemon而在其他目錄中為Kmydaemon這樣你

的腳本就會(huì)在進(jìn)入和退出運(yùn)行級(jí)時(shí)自動(dòng)處理了

除此與runlevel相關(guān)的啟動(dòng)指令之外Linux還從BSD中引入了另外一些配置文件其

中最重要的是/etc/rcd/rclocal通常它在執(zhí)行了全部運(yùn)行級(jí)腳本以后運(yùn)行你可以

在這里定制自己的設(shè)置如歡迎信息等等

版本之間的區(qū)別

如同我們看到的那樣Redhat的啟動(dòng)腳本看上去井井有條要尋找某個(gè)功能很容易

但是要尋找某個(gè)命令在何處啟動(dòng)就顯得比較困難經(jīng)常需要從/etc/inittab開(kāi)始

TurboLinux和RedFlag的腳本和Redhat頗為相似尤其是紅旗幾乎就是RedHat的中文

版它們的配置也相當(dāng)近似

Slackware的啟動(dòng)腳本使用另外一種風(fēng)格實(shí)際上看上去很象BSD系列啟動(dòng)腳本也

在/etc/rcd下面但是它把一些在大部分運(yùn)行級(jí)別必須使用的腳本做在了一起冠以r

cmodulesrcinetrcinet等等的名字這樣對(duì)于手工配置系統(tǒng)確實(shí)簡(jiǎn)單的多不

過(guò)這些文件都相當(dāng)大看起來(lái)需要耐心對(duì)于這個(gè)系統(tǒng)你只要看一遍/etc/inittab就

能掌握它的配置文件位置了

Debian/Corel使用一種有趣的方式看上去頗像Sun的Solaris實(shí)際上它和RedHat

的方式幾乎是一樣的但是啟動(dòng)腳本不是在/etc/rcd而是直接位于/etc下例如/et

c/rcd/etc/rcd等等知道了這一點(diǎn)之后配置debian就不會(huì)感到困難了

總結(jié)

以上是生活随笔為你收集整理的linux系统的运行定义在,Linux系统运行级管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。