init命令詳解

  
基礎命令學習目錄首頁

html

1.手動輸入命令會執行相關操做
  #init 0 - 停機(千萬不能把initdefault 設置爲0 )
  #init 1 - 單用戶模式
  #init 2 - 多用戶,沒有 NFS 不聯網
  #init 3 - 徹底多用戶模式(標準的運行級)
  #init 4 - 沒有用到
  #init 5 - X11 (xwindow) 圖形化界面模式
  #init 6 - 從新啓動 (千萬不要把initdefault 設置爲6 )
12345678910111213
2.用法:init命令很簡單。直接輸入init + 你想要的模式  回車就行。
好比輸入:  init 0  就是關機
                init 3  就是切換到多用戶-命令行模式
                init 5  就是切換到圖形化界面
                init 6  就是重啓
3.開機默認模式設置方式
當咱們已界面模式退出後,再次開機進入時,仍是界面模式,咱們想無論咱們以什麼模式退出,在每次開機進入時默認是命令行模式,該如何設置呢?
方法以下:在CentOS系統下有個跟文件目錄:/etc/inittab
1.  # inittab       This file describes how the INIT process should set up   
2.  #               the system in a certain run-level.   
3.  #   
4.  # Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>   
5.  #               Modified for RHS Linux by Marc Ewing and Donnie Barnes   
6.  #  
7.  # Default runlevel. The runlevels used by RHS are:   
8.  #   0 - halt (Do NOT set initdefault to this)   
9.  #   1 - Single user mode   
10. #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)   
11. #   3 - Full multiuser mode   
12. #   4 - unused   
13. #   5 - X11   
14. #   6 - reboot (Do NOT set initdefault to this)   
15. #    
16. id:3:initdefault:  12345678910111213141516
看第16行的代碼,這裏能夠設置默認啓動模式,若是設置爲 id:3:initdefault:  這表明默認啓動爲命令行模式。若是設置爲 id:5:initdefault:  這表明默認戚東衛圖形化界面模式。
注意:萬萬不能把默認設爲0或者6。由於0表明關機,6表明重啓。若是設置爲這兩個中的其中一個,就會反覆地關機和重啓。切記!
說明:#表明單行註釋
---------------------
做者:苦的人生碰見甜
來源:CSDN
原文:https://blog.csdn.net/wd2011063437/article/details/78959365
版權聲明:本文爲博主原創文章,轉載請附上博文連接!
 

1.init初探

     init是Linux系統操做中不可缺乏的程序之一。init進程,它是一個由內核啓動的用戶級進程,而後由它來啓動後面的任務,包括多用戶環境,網絡等。mysql

     內核會在過去曾使用過init的幾個地方查找它,它的正確位置(對Linux系統來講)是/sbin/init。若是內核找不到init,它就會試着運行/bin/sh,若是運行失敗,系統的啓動也會失敗。linux

     根據實際看一下,咱們來到/boot下,sql

     能夠看見,Grub就在這裏,vmlinuz-2.6.32-358.el6.i686這個文件很重要,說通俗一點的話應該是咱們的內核,在啓動後加載全部驅動(這個有另外的章節再講,這裏不詳述)。另外initramfs-2.6.32-358.el6.i686.img是啓動init進程的一個鏡像文件,包含一個最小的linux系統。服務器

     Linux內核在初始化以後會執行init進程,而init進程會掛載咱們的根文件系統,但因爲init程序也是在根文件系統上的,因此這就有了悖論。Linux採用兩步走的方法來解決這個問題。Linux2.6版之前的方法是:除了內核vmlinuz以外還有一個獨立的initrd.img映像文件,其實它就是一個文件系統映像,linux內核在初始化後會mount initrd.img做爲一個臨時的根文件系統,而init進程就是在initrd.img裏的,而後init進程會掛載真正的根文件系統,而後umount initrd.img。但Linux2.6內核的實現方式卻不太同樣,雖然完成的功能是同樣的。Linux2.6採用initramfs。initramfs:init ram filesystem,它是一個cpio格式的內存文件系統,其實這部分也有不少內容能夠講,咱們之後再談。網絡

  一般的步驟是先啓動內核,而後內核掛載initrd.img,並執行裏面的腳原本進一步掛載各類各樣的模塊,而後發現真正的root分區,掛載並執行/sbin/init。ssh

  若是沒有這個文件,計算機的啓動時第一個進程都啓動不起來。有他存在1號進程才能夠開啓。至關因而一個指揮官,他要指揮哪些程序在啓動時應當存在,哪些程序不該當存在。/etc/inittab文件是init在啓動時讀取的文件,也就是指揮官的決策書,這個決策書規定了當前戰爭的局勢,好比和平局勢、冷戰局勢、戰爭局勢。以及該局勢下的核心策略。init就是這樣,經過inittab這個文件控制了計算機的啓動級別,及該級別下啓動的進程。svn

複製代碼
[root@hao boot]# cat /etc/inittab
# Default runlevel. The runlevels used 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)
# 
id:5:initdefault:
複製代碼

  從這裏能夠看出,我這裏linux的default啓動級別是runevel 5(注意,此處不要擅自改成6,若是默認的runlevel是6,那麼就會比較麻煩,爲何會這麼說,看完下面每一個級別具體對應的進程就會明白)。那麼具體每一個級別都是什麼呢?其實每一個級別都有若干個進程,只不過每一個級別開的進程不一樣。post

  0:幾乎全部進程都關閉,停機狀態學習

  1:單用戶模式,root帳戶進行操做

  2:多用戶,不能使用net file system,通常不多用

  3:徹底多用戶,一部分啓動,一部分不啓動,命令行界面

  4:未使用、未定義的保留模式

  5:圖形化,3級別中啓動的進程都啓動,而且會啓動一部分圖形界面進程。

  6:中止全部進程,卸載文件系統,從新啓動

  這些級別中一、二、4不多用,相對而言0、三、五、6用的會較多。3級別和5級別除了桌面相關的進程外沒有什麼區別。爲了減小資源佔用,推薦都用3級別。

  那麼這些級別是如何定義的呢,在/etc/rc.d/目錄內,有以下目錄。

複製代碼
[root@Hao rc.d]# ll
total 60
drwxr-xr-x. 2 root root  4096 Mar 11 13:44 init.d
-rwxr-xr-x. 1 root root  2617 Feb 22  2013 rc
drwxr-xr-x. 2 root root  4096 Apr  3 08:36 rc0.d
drwxr-xr-x. 2 root root  4096 Apr  3 08:36 rc1.d
drwxr-xr-x. 2 root root  4096 Apr  3 08:36 rc2.d
drwxr-xr-x. 2 root root  4096 Apr  3 08:36 rc3.d
drwxr-xr-x. 2 root root  4096 Apr  3 08:36 rc4.d
drwxr-xr-x. 2 root root  4096 Apr  3 08:36 rc5.d
drwxr-xr-x. 2 root root  4096 Apr  3 08:36 rc6.d
-rwxr-xr-x. 1 root root   220 Feb 22  2013 rc.local
-rwxr-xr-x. 1 root root 19472 Feb 22  2013 rc.sysinit
複製代碼

  在諸如rc3.d和rc5.d目錄下有runlevel 3 和runlevel 5中容許和不容許啓動的進程,

  再進去目錄看一下。

複製代碼
[root@Hao rc.d]# ls rc3.d/
K01smartd          K69rpcsvcgssd      S10network           S26acpid
K02oddjobd         K73winbind         S11auditd            S26haldaemon
K05wdaemon         K75ntpdate         S11portreserve       S26udev-post
K10psacct          K75quota_nld       S12rsyslog           S28autofs
K10saslauthd       K76ypbind          S13cpuspeed          S50bluetooth
K15htcacheclean    K80kdump           S13irqbalance        S58ntpd
K15httpd           K84wpa_supplicant  S13rpcbind           S80postfix
K15svnserve        K87restorecond     S15mdmonitor         S82abrt-ccpp
K25sshd            K88sssd            S22messagebus        S82abrtd
K30spice-vdagentd  K89rdisc           S23NetworkManager    S90crond
K36mysqld          K95firstboot       S24nfslock           S95atd
K50dnsmasq         K99rngd            S24rpcgssd           S99certmonger
K50netconsole      S01sysstat         S24rpcidmapd         S99local
K50snmpd           S02lvm2-monitor    S25blk-availability
K50snmptrapd       S08ip6tables       S25cups
K60nfs             S08iptables        S25netfs
複製代碼
複製代碼
root@Hao rc.d]# ls rc5.d/
K01smartd        K75ntpdate         S11portreserve       S26udev-post
K02oddjobd       K75quota_nld       S12rsyslog           S28autofs
K05wdaemon       K76ypbind          S13cpuspeed          S50bluetooth
K10psacct        K80kdump           S13irqbalance        S55sshd
K10saslauthd     K84wpa_supplicant  S13rpcbind           S58ntpd
K15htcacheclean  K87restorecond     S15mdmonitor         S70spice-vdagentd
K15httpd         K88sssd            S22messagebus        S80postfix
K15svnserve      K89rdisc           S23NetworkManager    S82abrt-ccpp
K36mysqld        K95firstboot       S24nfslock           S82abrtd
K50dnsmasq       K99rngd            S24rpcgssd           S90crond
K50netconsole    S01sysstat         S24rpcidmapd         S95atd
K50snmpd         S02lvm2-monitor    S25blk-availability  S99certmonger
K50snmptrapd     S08ip6tables       S25cups              S99local
K60nfs           S08iptables        S25netfs
K69rpcsvcgssd    S10network         S26acpid
K73winbind       S11auditd          S26haldaemon
複製代碼

  這些都是連接文件lrwxrwxrwx,連接的路徑都是/etc/init.d中的腳本文件。

[root@Hao rc.d]# ll rc3.d/ | grep ab
lrwxrwxrwx. 1 root root 19 Feb 10 19:46 S08ip6tables -> ../init.d/ip6tables
lrwxrwxrwx. 1 root root 18 Feb 10 19:44 S08iptables -> ../init.d/iptables
lrwxrwxrwx. 1 root root 26 Feb 10 19:51 S25blk-availability -> ../init.d/blk-availability
lrwxrwxrwx. 1 root root 19 Feb 10 19:46 S82abrt-ccpp -> ../init.d/abrt-ccpp
lrwxrwxrwx. 1 root root 15 Feb 10 19:46 S82abrtd -> ../init.d/abrtd

  K開頭的文件意味着是要關閉進程的文件,S開頭的進程則是開啓的進程,以後的數字表示啓動的順序,好比S23NetworkManager和S80postfix都要依賴S10network,若是這個順序錯了或者電腦了,那麼和網絡有關的程序都會啓動錯誤,這個也在管理服務器的過程當中也須要按期去看一下。

  對比rc3.d/目錄與rc5.d/

[root@Hao rc.d]# diff  rc3.d/ rc5.d/
Only in rc3.d/: K30spice-vdagentd
Only in rc5.d/: S70spice-vdagentd

  發現spice-vdagentd服務在runlevel 3中是KILL的,在runleve5是START的,spice-vdagentd服務是Redhat桌面虛擬組件之一,因此在runlevel3中不必開,在runleve5中是要開啓的,不然Linux將沒法提供桌面服務,除此以外,兩個運行級別沒區別。

  還記得那個以前提到的決策書嗎?核心策略對應的會啓動的內容都是在這裏,好比和平局勢(之於runlevel 1)下啓用基本的民防系統(之於S01sysstat)就能夠了,冷戰時期(之於runlevel 3)除了民防之外,還開啓了自衛系統(之於S08iptables)、消息傳遞(S10network)、警報機制(之於S22messagebus)、派遣間諜(之於sshd)、調動步兵部隊(之於httpd)等等,若是是戰爭時期(之於runlevel 5)除了上面種種以外還要啓動更多的戰爭活動,調度更強大的部隊。

2.相關命令

經過chkconfig –level 3 sshd off在運行級別中的開啓或者關閉服務。

經過chkconfig –list sshd來查看sshd在全部runlevel中的狀態。

複製代碼
[root@Hao rc.d]# chkconfig --list sshd
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@Hao rc.d]# chkconfig --level 3 sshd off

[root@Hao rc.d]# chkconfig --list sshd
sshd            0:off   1:off   2:on    3:off   4:on    5:on    6:off
複製代碼

init 6是重啓,init 0是關機。

# who –r 查看當前級別  

run-level 5  2012-09-02 06:23

3.附文1.不當心把init 默認的運行級別設爲6怎麼辦

  經過查看 /etc/rc.d/rc6.d能夠看到,runlevel 6中只有兩個服務是開啓的,分別是  S00killall和S01reboot,若是默認的運行級別設爲6,那麼重啓以後,機器會不停重啓。

若是真的意(shou)外(jian)把默認的runlevel運行級別設置成了6,那麼須要以下操做更改默認運行級別。在GRUB界面按e

 

 

 

 

 

 

 

 

 

 

而後選中第二行,再按e進入

在出現的命令行後加 [\空格]1 (單用戶),按Enter鍵確認操做並後退到Linux配置頁面

再按b重啓Linux進入單用戶模式就能夠修改了,咱們這裏改成3好了。而後重啓就能夠了。

 

4.推薦文章

Linux啓動這個很不經意的過程裏面包含了太多的內容,本文只是介紹了很小的一部分,推薦你們去深刻了解,順便推薦幾篇還不錯的文章。

rc.d rc.local rc.sysinit 等Linux系統腳本啓動順序詳解 做者:jsxubar (朱秀龍) 

Linux2.6 內核的 Initrd 機制解析 做者: dazhi.li(李 大治)

深刻理解linux啓動過程 

原文連接:https://www.cnblogs.com/LinuxBlogs/p/4389415.html

相關文章
相關標籤/搜索