周期性任務丶find 文件查找:find命令 locate :在資料庫中查找,非實時查找,精確度不高,查找速度快,模糊查找 /tmp/passwad/a.textfind:實時查找:速度慢 ,精確匹配find [option] [查找路徑][查找標準][執行動作](預設為顯示)查找路徑:預設為當前路 ...
周期性任務丶find
文件查找:find命令
locate :在資料庫中查找,非實時查找,精確度不高,查找速度快,模糊查找 /tmp/passwad/a.text
find:實時查找:速度慢 ,精確匹配
find [option] [查找路徑][查找標準][執行動作](預設為顯示)
查找路徑:預設為當前路徑
查找標準:預設為指定路徑下的所有文件
查找標準:
-name “文件名稱”:根據文件名查找 支持使用globbing(文件名統配符)
-iname 忽略大小寫
-user UserName :根據屬主查找
-group groupname:根據屬組查找
-uid UID:根據UID查找
-gid GID:根據GID查找 以上兩個作用在於,有些用戶被刪除了,但是屬於該用戶的文件沒被刪除,所以通過UID,GID 來查找
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
組合條件
-a :且 -標準1 -a -標準2 兩標準都滿足,-a可省略,
-o:或
-not:反
-type:根據文件類型查找
f:普通文件
d:目錄文件
b:塊設備
c:字元設備
l:符號鏈接文件
p:命名管道
s:套接字
-size:根據文件大小查找
-size [+|-](大於|小於)#Unit
例如:-size +2M
常用單位:K,M,G
另外在一個單位之內的都表示等於 20K也是被當做1M文件,但是搜索-1M文件只能查找到0K的文件
根據時間查找:
以天為單位(time)
最近訪問時間 -atime [+|-]#unit #:表示(#+1)天之外被訪問過
:表示#天內被訪問過的
無符號:表示短於(#+1)>x>=#天的時間段被訪問過
最近更改時間-mtime
最近狀態改動時間-ctime
以分鐘為單位(min)
-amin
-mmin
-cmin
根據許可權查找:
-perm [+|-]MODE
MODE:精確匹配
+MODE:任何一類用戶的任何一位許可權都得匹配
-MODE:每類用戶的指定要檢查的許可權位都匹配
如 文件許可權 644
-perm -600 :否
-perm +222 :是
處理動作:
-ls :以長格式輸出各文件信息
-exec COMMAND {} \; :對查找到的文件指定的命令
-ok COMMAND {} \; :互動式
find把查找到的所有文件一次性地傳遞給-exec執行
find |xargs
文件的特殊許可權:
有這麼一個問題:對於設置用戶密碼的文件/etc/shadow 他的許可權是000,也就是說除了管理員以外,其他用戶都不能修改這個文件的內容
那麼,當用戶想要修改自己的用戶密碼時究竟要怎麼實現呢。
讓可執行文件有suid
任何用戶執行可執行可執行文件時,不再以用戶自己的身份達成進程的屬主,而是以文件的屬主當作進程的屬主
suid表現為文件屬主許可權執行位上的s或S
x:s
-:S
如何設定suid許可權
chmod u+s FILE
或者:假設原來的許可權為755
chmod 4755
目錄文件的sgid
具有sgid的目錄,用戶再此創建文件時,新建文件的屬組不再是用戶的屬組,而是目錄的屬組
chmod g+s FILE
或者:假設原來的許可權為755
chmod 2755
粘滯位:sticky
對於公共可寫的目錄,用戶可創建文件,可以刪除自己的文件,但無法刪除別的用戶的文件
chmod o+t FILE
或者:假設原來的許可權為755
chmod 1755
sticky表示其在其他用戶上表示為t或者T
x:t
-:T
suid sgid sticky
0 0 0
Linux任務計劃
一次性任務計劃
at,batch
周期性任務計劃:
crontab
anacron
一次性任務計劃:
at 互動式:讓用戶在at>提示符輸入多個要執行命令:
批處理:讓任務的個命令寫入文件由at進行調用
at TIME
at>
Ctrl+d 提交作業
at -l:查看作業 =atq
at -q 字母 TIME 添加別的隊列
at -d job_name 刪除一個尚未執行的作業= atrm
at批模式:
at -f 文件路徑 TIME
TIME:
模糊時間:
now,noon(中午) midnight(午夜)teatime(下午4點)tomorrow
任務的執行結果會議郵件的形式發送給提交者
使用mail
交互模式接受郵件
交互模式發動郵件
-s 指定主題
< /path/to/somefile
可以通過管道來提交郵件內容
batch:一批,與at不同的是,不能指定時間:它自動選擇系統空閑時執行
周期性任務計劃:cron,建議寫全路徑 ,否則有些命令可能找不到路徑
crond:守護進程,運行在後臺,隨時監視著進程等待執行
服務進程:阻塞,輪訓
系統cron
文件:/etc/crontab
/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
時間表示法:
1.每個事件為都應該使用其可用的有效取之範圍內的值
2.某事件圍上的*表示對應位的有效取值
3、-:連續的相鄰時間點取值
4、,:離散的時間點取值
5,/# :表示在指定時間範圍內每隔#一次
註意:通過輸出重定向而拒收郵件:
&> /dev/null
> /dev/null 2>&1
用戶cron
/var/spool/cron/UserName 該目錄下存儲crontab任務
使用crontab命令來實現:
-l:查看自己的cron任務列表
-e:通過EDITOR變數中定義的編輯器打開用戶自己的cron配置文件:
編輯單獨的任務都使用-e選項,無論是刪除、修改還是新建
-r:移除crontab文件
如果是管理員:
-u UserName :為別的用戶配置crontab作業;
提醒:如果在crontab的用戶命令中使用%,得轉義為\%
5 3 * * * /bin/touch ~/testfile_`date +\%Y-\%m-\%d`.txt
在使用單引號後,%也可以不轉義
5 3 * * * /bin/touch ~/testfile_`date +’%Y-%m-%d‘`.txt
如何實現秒級別的任務:
* * * * for i in {0..4};do /bin/echo “how are you?”;sleep10;done
crontab文件的格式
空白行會被忽略
#開頭的行是註釋
anacron: 是crontab的補充,用於檢查crontab中某任務在過去的一個周期內是否沒有執行,
如果沒有執行,則在開機以後的某時間點讓其執行一次,無論其周期是否到達
facl:文件訪問控制列表
普通用戶無法安全地將某文件授權給其他用戶訪問
facl:附加原有許可權模型之上另一層許可權控制機制,保存至文件擴展屬性信息中
getfacl FILE。。。獲取facl
setfacl[-m|-x]許可權 文件
-m:設定許可權
-m u:UserName:Perms
-m g:GroupName:Perms
-m m::Perms
-x:取消許可權
-x u:UserName
-x g:GroupName
-x m:
ll表示為+,有額外的許可權屬性
-R:遞歸,對文件夾內的文件也生效
bash編製之迴圈控制
for varName in LIST;do
迴圈體
done
while CONDITION;do
迴圈體
done
until CONDITION;do
迴圈體
done
迴圈控制:
continue:提前結束本次迴圈而開始評估下一輪
break[n]:跳出當前迴圈
網路詳解
網路基本知識
TCP/IP
物理層
鏈路層:從設備到設備主機通信,MAC地址,MAC<-->IP(RARP/ARP)
網路層: 從源主機到目標主機之間通信,IP地址,IP報文
傳輸層:從源主機進程到目標主機特定進程之間通信,tcp/udp
應用層:
ISO/OSI:七層
1-4:通信子網
5-7:資源子網
會話層
表示層
應用層
TCP:有連接協議,建立邏輯鏈接
SYN,ACK,FIN,RST,PSH,URG
三次握手:
SYN=1 ACK=0,FIN=0
SYN=1 ACK=1 FIN=0
SYN=0 ACK=1 FIN=0
四次斷開:
主機:TCP/IP協議棧
配置主機介入TCP/IP網路:
IP/Netmask
路由:
主機路由:一臺主機
網路路由:是一個網路
預設路由:
DNS伺服器:
主DNS伺服器
備用DNS伺服器
主機名:
動態指定:
IP/Netmask
動態配置:
DHCP伺服器
Dynamic Host Configuration Protocol
靜態指定:
用戶空間工具
ifconfig
ip
網路設備服務配置文件:
/etc/sysconfig/network-script/ifcfg-eth0
完成長久有效配置
GUI/TUI
用戶空間的命令行工具:立即生效,當不會長久有效
ifconfig
iproute2(ip,ss)
網路設備如何表示
內核識別設備:驅動
設備:別名
乙太網設備:ethX
PPP設備:pppX
本地迴環:lo
ifconfig ip addr ip link
ifconfig:顯示所有活動狀態的相關信息
ifconfig Interface:僅顯示指定介面的相關信息
ifconfig Interface Address
ip/mask
長格式:
ifconfig Interface IP netmask MASK
CIDR:無類別的預見路由
ifconfig Interface IP/MASK
route:ip route
route:顯示路由信息
-n:使用數字格式顯示,不反解地址到主機名
route add:
-host HOST_IP gw Next [dev Device]
-net Net_ADDR
-net 0.0.0.0 目標地址為任意地址
route del
-host HOST_IP gw 下一跳
-net Net_ADDR gw 下一跳
DNS伺服器指向:
配置文件:/etc/resolv.conf
最多三個:
nameserver DNS_SERVER_IP
dig -t A 功能變數名稱
正解測試
dig -x IP
反解測試
Centos5/6:
服務腳本:/etc/init.d/network
Centos 6
服務腳本:/etc/init.d/NetworkManager
服務腳本:SysV style LSB
控制運行在後臺守護進程,接受參數{start|stop|restart|status}
腳本位置:/etc/rc.d/init.d或/etc/init.d
配置某服務開機自動啟動:chkconfig Src_Script_Name on
禁止開機自動啟動:chkconfig Src_Script_Name off
查看 chkconfig --list
調用機制:
1./etc/init.d/Script_Name {start|stop|restart|status}
1.service Script_Name {start|stop|restart|status}
與網路設備相關的服務控制腳本
他們通常能夠讀取為網路配置的配置文件,以之實現其配置生效或失效等管理功能
配置文件有兩類(/etc/sysconfig/network-scripts/)
配置IP、掩碼、網關
乙太網:ifcfg-ethX
PPP:ifcfg-pppX
匹配路由
route-ethX
route-pppX
配置IP、掩碼、網關:ethX
DEVICE="eth0"
此配置關聯至的設備。設備名要與文件ifcfg-後ude內容保持一致
BOOTPROTO=none
引導協議:{none|static|dhcp|bootp}
HWADDR="00:0C:29:26:62:92"
MAC地址:要與真實MAC地址保持一致,可省略
NM_CONTROLLED="yes"
是否接受NetworkManager腳本控制:{yes|no}
ONBOOT="yes"
是否開機自動啟動此網路設備{yes|no}
TYPE="Ethernet"
設備類型Etheraget Bridge(橋接)
UUID="14351f7f-a726-4dfc-966e-dfb1f352f226"
唯一標識,可省略
IPADDR=
ip地址
NETMASK=
掩碼
GATEWAY=
預設網關
DNS1=
DNS1服務地址
IPV6INIT=no
是否開啟ipv6
USERCTL=no
是否允許普通用戶操作網卡
PEERDNS={yes|no}
是否允許DHCP服務分配地址時直接更新/etc/resolv。conf中的DNS伺服器地址
配置路由:route-ethX
配置文件的格式1:每行一個要配置的路徑條目
目標 via 下一跳
配置文件的格式2:每一組一個路由條目
ADDRESS#=目標
NETMASK#=掩碼
GATEWAY#=下一跳
ADDRESS0=192.168.0.0
NETMASK0=255.255.255.0
GATEWAY0=172.16.100.1
如何實現在單網卡上配置多個地址:
通過網路介面別名來實現
eth0X
eth0:X eth0:0 eth0:1....
配置1:
ifconfig ethX:Y IP/mask
配置2:
ifcfg-ethX:Y
DEVICE=ethX:Y
BOOTPROTO={none|static}
IPADDR=
NETMASK=
GATEWAY=
非主地址不支持DHCP協議獲取
ip命令的使用
ip link
ip link show 查看預設信息
ip link set 介面 [up|down] [multicast on|off]:
ip addr
可以在一個介面配置多個地址而不使用介面別名:顯示這些地址
ip addr show
ip addr add dev 介面 ip地址/掩碼 [ ladel 別名 ]
ip addr add dev 介面 ip地址 [ ladel 別名 ]
ip addr flush 介面 [to 網路地址]
ip route
ip route add 目標 via 下一跳 src 源地址 [dev 設備] 發到 “目標” 網段的網路包,下一跳的路由器 IP 是 “下一跳“”,包的源IP地址設為“源地址“” src 選項只會影響該 host 上產生的網路包。如果是一個被路由的外來包,明顯地它已經帶有了一個源 IP 地址,這時候,src 參數的配置對它沒有任何影響
ip route del 目標
ip route show
啟用/禁用介面:
ip link set 介面 up|down
ifconfig 介面 up|down
ifdown 介面,ifup 介面
重置網路連接
TUI或GUI
system-config-network-tui
配置結束後將保存配置文件中
setup --> Network Configuration
網路管理或檢測等相關的工具:
ping:ICMP
ping [options] ip
-c 次數
-w 測試執行時長
traceroute HOST:
獲取當前主機到目標主機所經過的網關
mtr HOST
netstat
-t:tcp協議的連接
-u:udp協議的鏈接
-l:監聽狀態的連接
-a:所有狀態的連接
-p:連接相關的進程
-n:數字格式顯示
-r: 顯示路由表,類似於route或ip route show
常用組合:
netstat -tan
netstat -tunl
netstat -rn
ss,用於取代netstat
-t:tcp協議的連接
-u:udp協議的鏈接
-l:監聽狀態的連接
-a:所有狀態的連接
-e:顯示擴展信息
-m:顯示套接連接使用的記憶體信息
-p:進程及UDP
-n:數字格式顯示
-o state (established)
ethtool 介面: 顯示介面設備屬性
ethtool -S 介面:顯示設備介面的統計數據
進程管理
進程管理:
二進位的格式為ELF,是CPU指令集中的指令
程式=指令+數據,
進程是程式的副本,可以有多個
內核是一個資源調度監視器
Linux是搶占式多任務
記憶體被事先劃分成多個相同大小的頁框
LIU:最近最少使用
mmap 共用記憶體
通過fork()進程生成
記憶體泄漏
init是所有進程的父進程
task_struct任務結構:是一種數據結構
雙向迴圈鏈表
線程是一個進程內的多個執行流
WLP:輕量級進程
模式轉換:
時鐘驅動:
進程優先順序:
是進程調度的核心資源
公平:
結果公平:
起點公平:
演算法:完成工作的調度方式
BIG O
O(1)
O(logn)
O(n)
O(N^2)
O(2^N)
一共140個隊列
0-99 為實時優先順序
進程間通信:IPC
InterProcess Communication
signal:信號
shm:共用記憶體
semerphor:旗語
socket:
rpc:Remoter Procedure Calling
xml-rpc,rest
過程:沒有返回值的函數
函數:
進程的分類:
CPU-Bound:CPU密集型
I/O-Bound:I/O密集型
進程的分類:
批處理進程
互動式進程
實時進程
進程調度器:
進程優先順序:0-139
實時優先順序: 1-99,數字越大,優先順序越高
靜態優先順序:100-139,nice值調整,數字越大,優先順序越低
nice:-20,19
priority:100,139
動態優先順序:由內核維護,動態調整
進程狀態:
運行態:running R
就緒態:
睡眠態:sleeping
可中斷睡眠 inruptable
不可中斷睡眠 uninruptable
停止態:不會被調度 stopped
僵死態:zombie
進程管理命令:
ps pstree pidof top htop pmap vmstat dstat
ps:顯示進程狀態的命令
進程:
與終端相關的進程:a
與終端無關的進程:x
STAT:
R:運行或可運行
S:可中端睡眠
D:不可中端睡眠
T:停止
Z:僵死
s:session leader 有子進程
+:前臺進程
l:多線程進程
N:低優先順序進程
<: 高優先順序進程
u:以用戶為中心顯示進程相關信息
%CPU:cputime/realtime
VSZ:虛擬記憶體集,Virutal menmory Size
RSS:常駐記憶體集,
STIME:啟動時間
TIME:累計占用的記憶體時間 []表示內核線程
常用組合一:ps aux
其他常用選項:
-e:顯示所有進程
-f:以進程的長格式顯示
常用組合之二:ps -ef
常用組合之三:ps -eFH
-F:顯示額外信息
-H:顯示進程的層次信息
pstree:顯示進程樹
自定義要顯示的信息:-o
ps auo pid, command
rtprio:實時優先順序
ni:nice值
pri:優先順序
psr:運行的cpu
pgrep pattern:
例如:pgrep bash
-U Username:僅顯示指定用戶的進程的進程的PID
-G Groupname:僅顯示指定用戶組的進程的進程的PID
pidof:顯示指定命令所啟動的pid
pidof command
top:
M:按記憶體占用百分比大小排序
P:按cpu占用百分比大小排序,預設
T:按累計占有時長進行排序
1:分開顯示
l: 是否顯示負載信息
t:是否顯示cpu和進程的統計信息
m:是否顯示記憶體和交互分區的信息
q:退出
k:kill,殺掉進程
s:改變top刷新頻率
top - 11:49:38 up 3:18, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 502168k total, 420160k used, 82008k free, 57496k buffers
Swap: 2097144k total, 0k used, 2097144k free, 254164k cached
us — 用戶空間占用CPU的百分比。
sy — 內核空間占用CPU的百分比。
ni — 改變過優先順序的進程占用CPU的百分比
id — 空閑CPU百分比
wa — IO等待占用CPU的百分比
hi — 硬中斷(Hardware IRQ)占用CPU的百分比
si — 軟中斷(Software Interrupts)占用CPU的百分比
VIRT:virtual memory usage 虛擬記憶體
1、進程“需要的”虛擬記憶體大小,包括進程使用的庫、代碼、數據等
2、假如進程申請100m的記憶體,但實際只使用了10m,那麼它會增長100m,而不是實際的使用量
RES:resident memory usage 常駐記憶體
1、進程當前使用的記憶體大小,但不包括swap out
2、包含其他進程的共用
3、如果申請100m的記憶體,實際使用10m,它只增長10m,與VIRT相反
4、關於庫占用記憶體的情況,它只統計載入的庫文件所占記憶體大小
SHR:shared memory 共用記憶體
1、除了自身進程的共用記憶體,也包括其他進程的共用記憶體
2、雖然進程只使用了幾個共用庫的函數,但它包含了整個共用庫的大小
3、計算某個進程所占的物理記憶體大小公式:RES – SHR
4、swap out後,它將會降下來
DATA
1、數據占用的記憶體。如果top沒有顯示,按f鍵可以顯示出來。
2、真正的該程式要求的數據空間,是真正在運行中要使用的。
常用選項:
-d #:指定刷新時間間隔
-b:以批次顯示top的刷新
-n # 指定指定的次數
htop
u:選擇指定用戶的進程
l: 顯示進程所打開的文件列表
s:顯示進程執行的系統調用
a:顯示進程的進程的cpu上
#:快速將游標定位之指定的PID進程上
quit
vmstst
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 57460 54564 285520 0 0 30 5 21 14 0 0 99 1
procs
r:運行或等待cpu時間片的進程的個數
b:被阻塞(通常為等待I/O完成)的進程的長度
memory
swpd:從物理記憶體交互至swap中的數據量
free:未使用的記憶體大小
buffer:buffer空間大小,通常與緩存寫操作相關
cache:cache空間大小,通常與緩存讀操作相關
swap
si:swap in 數據進入swap中的數據量,通常是速率。kb/s
so:swap out 數據離開swap中的數據量,通常是速率。kb/s
io:
bi:block in:從塊設備讀入的數據量,通常是速率,kb/s
bo:block out:保存至塊設備中的數據量,通常是速率,kb/s
in:中斷發生頻率。每秒的中斷數
cs:context switch 上下文切換,進程切換,通常是速率,kb/s
cpu:
us:用戶空間的使用率
sy:內核空間的使用率
id:空閑
wa:等待的
st:被偷走的
使用格式
vmstat [delay [counts]]
-s:顯示記憶體統計數據
進程:nice
用來手動調整進程優先順序
-20,19
100,139
預設nice為0.其預設優先順序為120
nice:普通用戶只能調大此值
對於尚未啟動的程式
nice -n # COMMAND 表示進程以#進程啟動
對於運行中的進程:
renice # PID 調整PID的nice值
查看 ps axo ni,command, pid
進程間通信(IPC):
信號:
kill命令:可以實現向其他進程發送信息
kill -l :可以查看向進程發送的所有信息
man 7 sigual
kill -SIGNAL PID
-SIGNAL:
數字代號:比如1,9等
信號名稱:如SIGHUP等
簡寫的信號名稱:如HUP等
1) SIGHUP:讓程式重讀配置文件,而不用重啟程式
2) SIGINT:中斷信號。Ctrl+c即發送次信號
9) SIGKILL:殺死進程
15) SIGTERM:終止進程,比較優雅(預設)
killall -SIGNAL 進程名
Linux的作業控制
前臺作業:占據著一個終端
後臺作業:作業執行時不占據終端,作業啟動後就釋放終端
非守護進程類的程式,啟動以後都在前臺工作
如果已經啟動:前臺-->後臺。ctrl+z把前臺作業送往後臺,作業被”停止“
如果尚未啟動:COMMAND &
退出當前會話,作業也會終止,因為作業與當前終端相關,如果把作業送往後臺後,不期望作業隨終止結束而停止
nohup COMMAND &
如何讓送往後臺的作業繼續執行:
fg [[%]作業號碼]:將作業調回前臺繼續進行
bg [[%]作業號碼]:讓作業在後臺繼續進行
預設的為最後一個進入後臺的任務
kill %作業號碼:終止作業
查看作業號:
jobs
系統初始化流程丶拯救模式
內核管理
os:
內核的功能:
進程管理:task_struct,scheduler
記憶體管理:
I/O管理:中斷及中斷處理
文件系統:ext3,ext4,reiserfs,xfs
驅動程式:
安全相關:SELinux
是通用軟體,平臺類的軟體
內核設計流派:
單內核:單一體繫結構
Linux
模塊化設計:核心+外圍功能性模塊組成
.ko:Kernel object
內核支持動態裝卸載模塊
微內核:內核子系統
Windows
Solaris
fock()
init:負責管理用戶空間的進程
init:PID 1
/sbin/init:可執行文件
Linux的初始化流程
POST:ROM+RAM
BIOS:Boot Sequence
MBR:
446:bootloader,用以選擇操作系統。還要能識別文件系統
64:分區表,16個位元組一個分區
2:5A
kernel文件:基本磁碟分區,無法放在LVM上
vmlinuz 壓縮存放,有兩段代碼組成,一個解壓代碼,一個為內核代碼
/sbin/init
/lib/
initrd:
rd:ram disk
/sbin/init:
/etc/inittab
/etc/rc.d/rc.sysinit腳本
init:
CentOS 5: SysV格式的系統初始化程式
串列化:
CentOS 6:Upstart
dbus
A
B
C
SystemD:參考OS X中並行初始化過程
運行級別:
0-6:7個級別
0:關機
1:單用戶模式,直接以root用戶登錄
2:多用戶模式,不支持NFS文件系統
3:完全多用戶模式,文本模式,不啟動圖形界面
4:預留級別
5:完全多用戶模式,圖形模式
6:重啟
/sbin/init的配置文件:
每行定義一種操作:
id:操作的id
運行級別:runlevels:在那些級別下執行此操作
action:動作
initdefault:設置預設運行級別,無需定義操作
sysinit:指定系統初始化腳本
si::sysinit:/etc/rc.d/rc.sysinit
wait:等待系統切換至此級別時運行一次;
ctrlaltdel:定義組合鍵被按下時要運行的命令:
respawn:當指定的操作進程被關閉時立即在重啟一次
tty1:2345:respawn:/sbin/mingetty tty1
process:操作
/etc/inittab中定義的操作(init要完成的任務)
指定預設運行級別
指定系統運行的初始腳本
啟動指定級別下的要啟動的服務,關閉要停止的服務
/etc/init.d
/etc/rc.d/rc.N.d(0-6)
s##
k##
定義ctrlaltdel組合的動作
初始化字元終端
終端:對應的是設備
/dev/tty#,/dev/ttyS#,/dev/console,/dev/pts/#
調用:login-->/etc/issue
啟動圖形終端
cmdline:內核啟動時傳遞給內核的參數
系統初始化腳本:/etc/rc.d/rcinit
設置主機名:
列印文本歡迎信息
激活SELinux和udev
激活swap
掛載/etc/fstab定義的本地文件系統
實現檢查根文件系統並對其以讀寫重新掛載
設置系統時鐘
裝載鍵盤映射
根據/etc/sysctl.conf設置內核參數
激活RAID和LVM設備
清理操作
MBR:
bootloader:引導載入器,是一個程式
LILO:LInux LOader
不能引導位於1024 Cylinder(柱面)以後的分區中的os;
GRUB:GRand Unified Bootloader
1st stage:位於MBR中,為了引導2nd stage
1.5 stage:位於boot基本磁碟分區中,為識別內核文件所在的文件系統提供文件識別擴展
2nd stage:位於boot基本磁碟分區中,GRUB的引導成勛
boot分區大小
Centos5:100M
Centos6:200M
/boot/grub/
stage2:讀取配置文件grub.conf
Grub的功能:
1.選擇要啟動的內核或系統
隱藏互動式介面
2.互動式介面
e: 編輯模式
3.基於密碼保護:在配置文件中 輸入 password --md5 密碼
啟用內核映像
定義在相應title下
傳遞參數(進入編輯模式)
定義在全局段中
grub介面
title:操作系統或內核的標題
root:設定內核文件所在的分區為grub的根
kernel:定義要使用的文件,後面可以附加傳遞給內核的啟動參數
initrd:指定為內核提供額外驅動等功能的ram disk或ram fs文件
init的級別1的表示方法:
1,s single S
單用戶模式幾乎不會啟動任何服務,且不需要用戶登錄;單是會執行/etc/rc.d/rc.sysinit腳本
如果連/etc/rc.d/rc.sysinit文件也不載入,則傳遞emergency
運行級別的切換
#init [0-6]
查看運行級別:
runlevel
who -r
grub.conf配置文件語法:
default=#:指定預設啟動的內核或os
timeout=#:等待用戶選擇要啟動的內核或os的時長,單位為秒鐘
splashimage= :指定使用的背景圖片
hiddenmenu:隱藏菜單
title
root(hd0,0)
(Device Part)
Device(磁碟)表示方式:在grub中,統統以hd開頭,並緊跟一個數字做各磁碟設備的標記,從0開始
part表示方式:代表分區,從0開始編號
kernel
指定內核文件及傳遞給內核的參數
參數:ro root=設備文件,quiet 靜默模式輸出
initrd
文件:通常為cpio歸檔,並使用gzip壓縮,通常以.img作為文件尾碼名
在緊急救援模式下:
grub的安裝:
第一種方式
#grub
grub root(hd0,0)
grub setup(hd0)
grub quit
第二種方式:
# chroot /mnt/sysimage
# grub-install --root-directory=/ /dev/sda
sync 將記憶體文件載入到硬碟上
啟動流程:POST-->BIOS(boot sequence) --> GRUB(bootloader(stage1:mbr;stage2:grub目錄中)) --> kernel(initrd) --> SHELL
HOST:宿主機
Target:目標機
基於HOST只做一個簡單的可啟動的Linux
1.給目標磁碟分區
兩個:
宿主機上:/dev/sdb1 /dev/sdb2
/dev/sdb1 掛載至 /mnt/boot
/dev/sdb2 掛載至 /mnt/sysroot
2.安裝grub至目標磁碟
# grub-install --root-directory=/mnt /dev/sdb
3、複製內核和initrd文件
cp /boot/vmlinuz-Version /mnt/boot/vmlinuz
cp /boot/initramfs-Version.img /mnt/boot/iniyramfs.img
4.創建目標文件的根系統文件
mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,src,mnt,media,home,root}
接著去移植bash等至目標主機的根文件系統
5.為grub提供配置文件
vim /mnt/boot/grub/grub.conf
default=0
timeout=5
title
root(hd0,0)
kernel /vmlinuz ro root=/dev/sda1 selinux=0 init=/bin/bash
initramfs /initramfs
Linux的內核,單內核,支持動態裝載和卸載
模塊:/lib/modules/Kernel_version/
查看pci設備的命令
lspci -v
查看當前內核裝載的所有模塊
lsmod
查看某模塊的詳細信息
modinfo 模塊
動態卸載某模塊
modprobe -r 模塊
rmmod 模塊
動態裝載某模塊
modprobe 模塊
insmod 路徑文件
/sbin/init
/etc/inittab
/etc/rc.d/rc.sysinit
啟動對應級別的需要啟動的服務。停止需要關閉的服務
/etc/rc.d/rcN.d/
S##
K##
符號鏈接:/etc/init.d
##:表示優先順序(0-99),數字越小,優先順序越大
chkconfig --add 添加服務
指定級別
--level
刪除:
chkconfig --del