引導過程與服務控制

Linux開機啓動原理完整過程要經歷十步面試

第一步開機自檢(BIOS),就是主板檢測shell

第二步MBR引導,就是硬盤引導安全

第三步GRUB菜單, 操做系統的啓動菜單bash

第四步 加載內核kernel,啓動操做系統核心運維

第五步 運行INIT進程,init進程初始化,執行kernel的任務(執行程序)dom

第六步 讀取etc/inittab配置文件(Linux開機時默認的啓動模式)ssh

第七步 執行/etc/rc.d/rc.sysinit初始化腳本(/proc目錄是臨時存放內存數據用的目錄)socket

第八步 執行/etc/rc.d/rc 腳本(去某個目錄執行文件)post

第九步 執行/etc/rc.d/rc.local 我的配置腳本ui

第十步 啓動mingetty 進程(啓動我的進程)

 

GPUB菜單   看機啓動時按esc

 

能夠干擾默認啓動模式。e 2 e 空格 3 回車 再按b 控制開機引導方式

改一下這個數字保存退出重啓之後默認進入咱們想要進的模式                                                                

pstree以樹的形式顯示進程

[root@wangna ~]# pstree

init─┬─crond

     ├─login───bash

     ├─5*[mingetty]

     ├─rsyslogd───3*[{rsyslogd}]

     ├─sshd───sshd───bash───pstree

     └─udevd───2*[udevd]

PID號是1

init是主進程

sshd是個socket進程

什麼叫作socket進程,咱們管24小時不間斷監聽某個固定端口的進程,叫作socket進程。

[root@wangna ~]# bash    在以前的進程生成一個子進程

[root@wangna ~]# exit      

exit

Linux作事的整個原理:

sshd這個進程是負責咱們遠程鏈接服務的進程,當咱們xshell鏈接上Linux之後,sshd主進程會臨時生成一個sshd子進程來接待咱們全部發起的遠程鏈接。sshd子進程,爲了可以讓咱們以友好的方式進行遠程操做,sshd子進程會生成一個叫作bash的界面進程。其實咱們的命令模式所操做的界面就是bash這個界面。爲了同一時間解析多個命令,bash有生成一個進程,直接就是命令,生成一個臨時子進程,去幫咱們作事,作完事本身就消失了。

[root@wangna ~]# cd /proc

[root@wangna proc]# ls

1     11    134  20   297  392  72   cmdline    interrupts  kpageflags  net  sys       

10    1103  14   21   3    4  750     cpuinfo  iomem  loadavg pagetypeinfo  sysrq-trigger

1066  1104  140  22   30   41   8    crypto    ioports  locks   partitions    sysvipc

1074  1105  141  23   31   42   9   devices    ipmi    mdstat   sched_debug   timer_list

1082  1120  142  24  314   5  928   diskstats    irq     meminfo    schedstat     timer_stats

1089  1122  15  25  315  580  945     dma      kallsyms    misc       scsi          tty

1091  1166  16   26   32   588  990    driver     kcore   modules     self         uptime

1093  1178  17   27   33   6    acpi    execdomains  keys    mounts     slabinfo    version

1095  12    18   28   346  7  buddyinfo   fb     key-users   mpt    softirqs    vmallocinfo

1097  13   19    29   38  702  bus    filesystems   kmsg    mtd    stat        vmstat

1099  133   2    295  39  703  cgroups    fs    kpagecount  mtrr   swaps     zoneinfo

[root@wangna proc]# which ps

/bin/ps

[root@wangna proc]# ps     直接顯示進程

   PID TTY          TIME CMD

  1122 pts/0    00:00:00 bash

  1181 pts/0    00:00:00 ps

[root@wangna proc]# ps -ef

UID         PID   PPID  C STIME TTY          TIME CMD

root          1      0  0 18:12 ?        00:00:00 /sbin/init

root          2      0  0 18:12 ?        00:00:00 [kthreadd]

root          3      2  0 18:12 ?        00:00:00 [migration/0]

root          4      2  0 18:12 ?        00:00:00 [ksoftirqd/0]

root          5      2  0 18:12 ?        00:00:00 [migration/0]

postfix    1082   1066  0 18:12 ?        00:00:00 qmgr -l -t fifo -u

/proc/既有目錄又有文件,可是咱們發現好多目錄的名字都是數字,那麼這個數字目錄究竟是什麼呢?是進程

若是隻把眼光站在運維的角度看問題,那麼你只能看到進程這個東西。

一般來講,站在運維的立場,進程就是程序。

可是,假如咱們把眼光看的更深一些,其實進程裏還有許多叫作線程的東西,而後真正幹活的不是進程,而是線程。

若是面試時面試官問你,進程是什麼?你說進程就是程序,也能夠。

但若是面試的是開發。那麼你必定要說,進程什麼都不是,它只是一個目錄,存放資源的目錄,這些資源是提供給線程進行調用的資源,真正幹活的是線程,所以,線程纔是進程。

[root@wangna ~]# cd /etc/rc3.d  

[root@wangna rc3.d]# ls

K10saslauthd    K89rdisc      S08ip6tables   S12rsyslog        S25netfs     S80postfix

K50netconsole   K92iptables   S10network    S15mdmonitor    S26udev-post  S90crond

K87restorecond  S02lvm2-monitor  S11auditd  S25blk-availability  S55sshd       S99local

[root@wangna rc3.d]# chkconfig 查詢全部開機啓動

auditd          0:off 1:off 2:on 3:on 4:on 5:on 6:off

blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off

crond           0:off 1:off 2:on 3:on 4:on 5:on 6:off

ip6tables       0:off 1:off 2:on 3:on 4:on 5:on 6:off

iptables        0:off 1:off 2:off 3:off 4:off 5:off 6:off

lvm2-monitor    0:off 1:on 2:on 3:on 4:on 5:on 6:off

mdmonitor       0:off 1:off 2:on 3:on 4:on 5:on 6:off

netconsole      0:off 1:off 2:off 3:off 4:off 5:off 6:off

netfs           0:off 1:off 2:off 3:on 4:on 5:on 6:off

network         0:off 1:off 2:on 3:on 4:on 5:on 6:off

postfix         0:off 1:off 2:on 3:on 4:on 5:on 6:off

rdisc           0:off 1:off 2:off 3:off 4:off 5:off 6:off

restorecond     0:off 1:off 2:off 3:off 4:off 5:off 6:off

rsyslog         0:off 1:off 2:on 3:on 4:on 5:on 6:off

saslauthd       0:off 1:off 2:off 3:off 4:off 5:off 6:off

sshd            0:off 1:off 2:on 3:on 4:on 5:on 6:off

udev-post       0:off 1:on 2:on 3:on 4:on 5:on 6:off

[root@wangna rc3.d]# chkconfig | grep "3:on"

auditd          0:off 1:off 2:on 3:on 4:on 5:on 6:off

blk-availability     0:off 1:on 2:on 3:on 4:on 5:on 6:off

crond           0:off 1:off 2:on 3:on 4:on 5:on 6:off

ip6tables       0:off 1:off 2:on 3:on 4:on 5:on 6:off

lvm2-monitor    0:off 1:on 2:on 3:on 4:on 5:on 6:off

mdmonitor       0:off 1:off 2:on 3:on 4:on 5:on 6:off

netfs           0:off 1:off 2:off 3:on 4:on 5:on 6:off

network         0:off 1:off 2:on 3:on 4:on 5:on 6:off

postfix         0:off 1:off 2:on 3:on 4:on 5:on 6:off

rsyslog         0:off 1:off 2:on 3:on 4:on 5:on 6:off

sshd            0:off 1:off 2:on 3:on 4:on 5:on 6:off

udev-post       0:off 1:on 2:on 3:on 4:on 5:on 6:off

[root@wangna rc3.d]# chkconfig | grep postfix

postfix         0:off 1:off 2:on 3:off 4:on 5:on 6:off

[root@wangna rc3.d]# ls

K10saslauthd K80postfix K89rdisc S02lvm2-monitor S10network S12rsyslog    S25blk-availability  S26udev-post  S90crond

K50netconsole  K87restorecond  K92iptables  S08ip6tables     S11auditd   S15mdmonitor  S25netfs             S55sshd       S99local

[root@wangna rc3.d]#  mv K80postfix S80postfix    K80改成S80S是開

[root@wangna rc3.d]# chkconfig | grep postfix

postfix         0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@wangna rc3.d]# ls

K10saslauthd   K87restorecond  K92iptables      S08ip6tables  S11auditd   S15mdmonitor         S25netfs      S55sshd     S90crond

K50netconsole  K89rdisc        S02lvm2-monitor  S10network    S12rsyslog  S25blk-availability  S26udev-post  S80postfix  S99local

[root@wangna ~]# chkconfig --list postfix 查看單一的服務

[root@wangna ~]# chkconfig postfix on    指定在345模式下開啓

[root@wangna ~]# chkconfig postfix off    指定在345模式下關閉

[root@wangna ~]# chkconfig --level 3 postfix on 指讓在3模式下開始

Service服務名start|stop|restart(強制關閉在重啓)|reload(平滑重啓)|status(看狀態)

雖然咱們常常用這個方式來控制服務的當前啓動狀態,可是,假如咱們忘記了postfix或者其餘服務的名字,會發現這種方式不能tab

那麼,咱們建議利用一個路徑 /etc/init.d/ 來控制服務

[root@wangna ~]# service postfix status   看一下postfix的狀態

[root@wangna ~]# service postfix stop    postfix服務關閉了

[root@wangna ~]# service postfix start    postfix服務開啓

當咱們的啓動模式是3模式,那麼Linux進入/etc/rc3.d/目錄下,就會執行裏面全部有以S打頭的腳本(那麼依靠這個方式完成的開機服務自啓動)。因此,chkconfig這個命令所查看的內容,實際上是即時生成的。然而並非保存於某個文件裏。所以,咱們是沒法對chkconfig的啓動項作備份的。所以,在運維工做中,咱們並不建議以chkconfig的方式來管理Linux操做系統的開機自啓動項,由於運維須要安全,安全就要備份。/etc/fstab開機自動掛載,咱們也不推薦的。推薦在/etc/rc.local,其實,咱們也能夠經過命令的方式去啓動服務。若是/etc/rc.local這個腳本每次開機都先啓動的話,裏面的命令也會被先執行,其實也就是開機自啓動。

運維規則就是有理由便可。

 命令runlevel查看系統當前啓動模式

***命令dd 重要命令(測磁盤讀寫速度), 工做中運維經過dd命令檢測磁盤讀寫速度。

工做中常使

[root@wangna ~]# dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1

/dev/sda系統盤開始抽前512字節的數據,輸出到/backup/sda.mbr.bask,抽一次備份

[root@wangna ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1

***從無限數據流文件取東西輸出到/dev/sda裏,輸出前512字節 輸出一次,把前512覆蓋了,系統就啓動不起來了,很難恢復數據

Linux操做系統裏有兩個特殊的文件,/dev/null/dev/zero

/dev/null 咱們稱做黑洞文件,不論什麼文件內容被重定向到了這個文件裏,內容就都消失了。也叫垃圾箱文件。

/dev/zero 咱們稱爲無限數據流文件,不論你要從文件裏取多大的數據,都能取得出來,然而取出的數據沒有任何內容顯示,就是純粹的佔大小。

相關文章
相關標籤/搜索