天天看點

Linux學習(四)服務與程序

一、Linux 系統啟動與快捷鍵設定

1.Linux 系統啟動過程

系統的 引導 和 初始化 是作業系統實作控制的第一步。

Linux系統的初始化主要包括 核心 和 init程式 兩部分:

  • 核心主要完成對系統硬體的檢測和初始化工作。
  • init程式主要完成對系統的各項配置。

Linux啟動流程圖(畫的有點醜将就下):

Linux學習(四)服務與程式

下面介紹下各部分:

(1) BIOS(Basic Input/Output System):基本輸入輸出系統,存儲于主機闆的ROM晶片上

BIOS主要功能是存儲了磁盤的啟動順序,BIOS會按照順序查找第一個磁盤頭的MBR資訊。

(2)MBR(Master Boot Record):主引導記錄,存于磁盤頭部,分别存儲了BootLoader程式,分區表資訊 以及用于有效性檢查的工具。

(3)GRUB(Grand Unified BootLoader):多系統啟動程式,用于查找并加載Kernel,其執行過程分為三步:

== stage1==:查找并加載stage2(BootLoader程式)。

stage1.5:但若系統未啟動,MBR找不到檔案系統(stage2所存放位置),就得先引導位于檔案系統中的stage2 。

stage2:GRUB程式會根據/boot/grub/grub.conf檔案查找Kernel的資訊,然後開始加載Kernel程式,當Kernel程式被檢測并在加載到記憶體中,GRUB就将控制權交接給了Kernel程式。

Note:此時/boot 還未被挂載,GRUB直接識别grub所在磁盤的檔案系統,應該是/grub/grub.conf

(4)Kernel :核心,作業系統核心,軟硬體的互動通道。

initrd(Initial RAM Disk):stage2時拷貝到記憶體上 ,是一個臨時的根檔案系統(rootfs),該檔案裝載了必要的驅動子產品,直到真正的rootfs被挂載後,initrd将從記憶體中移除。

(5)init:OS初始化操作,實際上是根據/etc/inittab(定義了系統預設運作級别)設定的動作進行腳本的執行,第一個被執行的腳本為/etc/rc.d/rc.sysinit,這個是真正的OS初始化腳本,簡單講下這個腳本的任務(可以去看看實際腳本,看看都做了什麼):

  • 激活udev和selinux;
  • 根據/etc/sysctl.conf檔案,來設定核心參數;
  • 設定系統時鐘;
  • 裝載硬碟映射;
  • 啟用交換分區;
  • 設定主機名;
  • 根檔案系統檢測,并以讀寫方式重新挂載根檔案系統;
  • 激活RAID和LVM裝置;
  • 啟用磁盤配額;
  • 根據/etc/fstab,檢查并挂載其他檔案系統;
  • 清理過期的鎖和PID檔案

執行完後,根據配置的啟動級别,執行對應目錄底下的腳本,最後執行/etc/rc.d/rc.local這個腳本,至此,系統啟動完成。

2.關于系統運作級别

CentOS Linux7中,每個運作級别都有屬于自己的target檔案,都是連結檔案,運作級别的設定由/etc/system/system/default.target檔案控制。

在運作級别對應的目錄中,所有檔案的命名都是Knn… 和 Snn…

S開頭的檔案是系統啟動時調用的服務程序,K相對的就是終止時balabla.

系統圖形界面的運作級别是5,文本界面是3

使用Systemctl set-default name.target來修改預設的運作級别。

//将系統的預設運作級别修改為圖形界面
system set-default graphical.target
reboot
           

如何關閉Ctrl + Alt + Del 重新開機系統的組合件呢?

vim編輯這個檔案,全部注釋/usr/lib/systemd/system/ctrl-alt-del.target 檔案的内容,儲存退出,執行init q重新加載配置檔案。

二、使用systemctl管理NFS服務

1.什麼是服務?

簡單來說就是執行某系統功能的程式來支援其他更加底層的程式。例如:列印服務,HTTP服務,FTP服務。一般的服務管理有啟動、查詢、停止等操作。

Linux系統的服務分為獨立運作的服務和受xinetd管理的服務兩大類。

獨立運作的服務一般與運作級别有關,在系統啟動後就直接運作和管理;

xinetd本身就是一個獨立運作的服務,負責管理一些不常用的服務,其啟動和停止都由xinetd控制。

在管理服務時,Linux中的每個服務都由相應的啟動腳本,用于設定啟動、停止、重新開機和查詢服務等功能。所有服務的腳本都放在 /etc/rc.d/init.d 目錄中,可用less指令檢視。

2.那麼什麼是NFS服務?

NFS (Network FileSystem ) ,主要功能就是可以透過網絡,讓不同的機器、不同的作業系統、可以彼此分享個别的檔案 (share files)。可以簡單看做是一個檔案伺服器 (file server) 。

NFS 伺服器可以讓你的 PC 來将網絡遠端的 NFS 伺服器分享的目錄,挂載到本地端的機器當中, 在本地端的機器看起來,那個遠端主機的目錄就好像是自己的一個磁盤分區槽一樣 (partition)

3.systemctl指令

Linux中對服務的管理可以通過systemctl指令來實作。

(1)服務的啟動與停止

systemctl    start(啟動)/stop(停止)/status(檢視運作)/restart(重新開機)/reload(重載)   XXX.service
           

例如:管理network服務

Linux學習(四)服務與程式

注:服務一般以 “ .service ” 結尾。

(2)設定服務自啟動

ntsysv --back --level
           
Linux學習(四)服務與程式

或者systemctl指令也可以設定

例如:檢視network服務的開機自啟動狀态,并設定為開機不啟動。

Linux學習(四)服務與程式

(3)檢視所有的服務

systemctl             //列出所有的系統服務
systemctl list-units           //列出所有啟動unit
systemctl list-unit-files         //列出所有啟動檔案
systemctl list-units  -type=service -all          //列出所有service類型的unit
systemctl list-units  -type=service -all grep cpu        //列出CPU電源管理機制的服務
systemctl list-units  -type=target -all          //列出所有目标單元target
           

三、程序的延遲與周期排程

1. 程序是什麼?

首先來看一下程式是怎麼定義的:程式是為了完成某種任務二設計的軟體,包含可執行的代碼和資料,而程序是指開始執行但是還沒有結束的程式的執行個體。

一個運作的程式可能有多個程序。

程序一般分為互動程序、批處理程序和守護程序3類。

互動程序:shell下通過執行程式産生的程序,可在前台和背景運作。

批處理程序:程序的序列,執行時不需要人機互動。

守護程序:一直運作,一般在背景運作。

2.程序排程

Linux下的程序排程一般用 at 和 crontab .

(1)延遲性排程:at

at 指令在指定時刻執行指定的指令,實際是一組指令的集合。使用前需要確定atd服務是開啟的,使用 #systemctl start atd.service 開啟,并用 #systemctl enable atd.service 确認一下。atq指令可用于查詢已設定的指令序列,atrm指令用于删除已設定的指令序列。

//基本格式就是:

at time

at> 動作

at>ctrl +d

其他at的指令
           

at -l #檢視任務的編号(任務已完成則沒有顯示)

at -c 任務編号 #檢視這個任務的内容

at -r 任務編号 #删掉這個任務

下面就來舉個栗子啦~

//兩天後的17:30執行檔案data中指定的作業
# at -f data 17:30+2 days
           
//一分鐘後再tty1中提示"hello!"
# at now+1 minutes
at>echo"hello!">/dev/tty1
at>ctrl+D
           
//明天淩晨2點将正在登陸的使用者寫入/tmp/users.log
# at 2:00 tomorrow
at> w>/tmp/users.log
           
//一分鐘後在主目錄中建立目錄at
# at now+1 minutes
at>mkdir at
at>ctrl+D
           

(2)周期性排程:crontab

crontab指令可以在指定的日期和時間周期執行。

//基本格式
#crontab
minute hour day month dayofweek command
ctrl+D
           

舉例:

//每周四早上8:30,提醒使用者10:00開會
# crontab
30 8 * * 4 echo "meeting at 10:00 am">/dev/tty1
ctrl+D
           

可以#crontab -e進入vim修改排程任務。

3.程序檢視

ps是最基本的程序檢視指令。可以确定哪些程序在運作、挂起、運作了多久、在使用的資源、程序相對優先級及程序的辨別号(PID)。

ps  aux        //檢視終端上所有使用者程序的所有資訊
ps  aux|less       //分頁檢視
ps  aux|grep glenda    //檢視使用者glenda所有程序資訊
           

pstree還可以以樹狀結構顯示系統程序的繼承關系。

4.程序終止

終止前台運作的程序一般用:Ctrl + C;

終止背景程序,必須用 kill、killall 之類的程序終止指令。

(1)kill

一般和ps、grep結合使用

ps -A|grep sshd     //查詢sshd服務程序的pid是1097
kill 1097
           

對于僵屍程序,用信号代碼-9強行終止。

(2)killall:通過程序的名字,直接終止。

killall sshd     //終止所有sshd程序
           

5.作業控制

正在執行的一個或多個相關程序稱為一個作業,作業控制是指控制目前正在運作的程序的行為,使用者可以同時運作多個作業。

繼續閱讀