linux啟動流程: {
1. BLOS 識别硬體,自我測試,導向MBR
2. MBR 提供菜單選擇系統項 , grup
3. Boot loader kernel 與 加載記憶體及檢測硬體情況
4. 核心檔案 加載init程序 基本指令 ls ,cp , 其他軟體加載到記憶體中
5. 配置檔案 /etc/rc.d/rc.sysinit
6. 執行服務的啟動
7. 加載 /etc/rc.d/rc.local
}
shell特殊符号: {
# 注釋
\ 轉義
| 管道 用于資料定向 cat etc/passwd | cut -d: -f1
; 分隔符
~ 使用者根目錄
$ 變量符号
& 作業控制
! 非
/ 目錄符号
>> > 資料輸出
< << 資料輸入
'' "" ``
()
{}
}
shell腳本程式設計: (用于系統維護,自動化管理,檢測) {
習慣良好的程式設計習慣
#!/bin/bash 作為起始描述.
定義變量 declare -i num=1 declare -s str="sss"
執行shell腳本 source xxx.sh(父程序中執行,可更新配置檔案) bash xxx.sh
bash -x xxx.sh 執行調試
輸入 read -p "" var 輸出 echo -e (格式化輸出)
字元的作用 '' 隻做字元的引用 "" 還可做變量的引用 `` 指令做執行結果
測試包含: 1. 數字測試 2. 字元測試 3. 檔案測試
1.數字測試 -gt -lt -ge -le -eq -ne 可用中括号完成
2.字元測試 == =~ 正則比對測試 != -n 判斷字元是否為空 null位真 -z 可用兩對中括号完成
3.檔案測試 -e 存在 -f 普通檔案 -d 目錄 -b 塊裝置 -c 正規表達式字元裝置 -S socket檔案 -p FIFO檔案 (鍵盤裝置??) -L 連接配接檔案 可用中括号完成
-nt file1是否比file2新? -ot file2是否比file2舊? -ef 兩個檔案的inode号是否一緻
4.檔案權限測試 -r -w -x
多條件判斷 && || !
個人傾向 [ a ] && [ b ] 可有: [[ a && b ]] [ a && y ]
變量分類:
本地變量 可由使用者定義,隻能在目前的上下文中使用,其他shell均沒有權限
定義 num=1 但在使用的時候 $1
局部變量 $? 目前指令執行的狀态
環境變量 比如shell腳本第一句導入,就是環境變量,目前的shell可以通路環境變量 比如$path
位置變量 #1 #2 #2 與shell腳本執行的參數變量
特殊變量 $#(參數個數) $@(總參數清單)
算數運算: let sum+=2
流程控制:
if [ conditions ]; then fi
if [ conditions ]; then else fi
if [ conditions ]; then elif [ conditions ]; then else fi
case $1 in
"a")
;;
"b")
;;
*)
;;
esac
for $i in 清單; do
done
清單生成
1. for i in 1 6 8;
2. for i in /usr/log/*
3. for i in {0..10}
for i in `seq 1 10 1`
for i in `seq 1 $line 2`
for (( i=0; i<n; i++ )); do
done
while [ conditions ]; do
done
while read line; do
done < /etc/passwd
until [ !conditions ]; do
done
函數定義: function name() {
echo $1
}
name 1
shift: 參數輪替
}
shell特性重定向: {
每一個指令都支援支援最基本的linux标準輸入和輸出
ls /etc/passwd 可将資訊輸出到使用者頻幕上
./a.txt < /etc/passwd ./a.txt << /etc/passwd 講資訊輸入到a ??
cat /etc/passwd > ./a.txt >>
可以在set -C 禁止覆寫
&> 和錯誤也定向輸出
cat /dev/zero > /dev 清空硬碟
ls /etc &> /dev/null 講錯誤定向到null區域
雙向重定向 tee 輸出螢幕和檔案 tee 後一般是檔案
}
shell指令: {
cat 輸出
ll = ls -l
who 誰線上
cut 講資訊進行切割 cut -d' ' -f1 (-d 切割字元 -f 擷取切割段)
grep 對檔案進行正則比對查找 (grep "" 檔案 / cat /etc/passwd | grep "")
last 最後登陸資訊 20條
export 列印目前使用者的環境
sprt 排序 sort -t '' -k 3 (-t 切割字元 -k 切割後的條件)
uniq 排除重複
wc -c -l (字元數 , 檔案行數)
tr '[A-Z]' '[a-z]' 大小寫轉換
}
shell常用目錄或檔案: {
/etc/passwd 賬戶資訊
/dev/null null黑洞
/dev/zero zero0用于填充磁盤
/etc/rc.d/rc.init 啟動資訊
/etc/vimrc ~/.vimrc vim配置資訊
/proc/partitions 分區資訊
/proc/cpuinfo /proc/meminfo cpu meminfo資訊
/etc/fstab 挂載點資訊(可更新) /proc/mounts 詳細 /etc/mtab
/proc/sys/vm/swapiness 記憶體政策 是否啟用交換分區
/etc/mdadm.conf 陣列配置資訊
/proc/mdstat 整列裝置資訊
/dev/rc.d/rc.sysinit 開機啟動項
/etc/sysconfig/network-scripts/ifcfg-eth0 網絡配置
/etc/yum.conf /etc/yum.repos.d/* 軟體源配置
/etc/issue 歡迎資訊
/boot/grup 引導器 /boot/grup/menu.lst 引導清單
/etc/man.config man文檔比對
/etc/profile.d 腳本配置目錄
/usr/include 頭檔案目錄
/etc/ld.so.conf.d/ 庫檔案所在
/proc/meminfo 記憶體資訊
}
vim的使用: {
模式:
編輯模式 預設/esc 指令模式 : 輸入模式 i 可視模式 v
按鍵:
編輯模式 gg
移動 ^ h j k l $ 可與數字配合 10j
G
ZZ 退出
dd 删除整行 d
o 新插入一行
yy 複制整行 y
p 粘貼
J 合并行
u 還原 ctrl+r 撤銷
r 替換一個字元
CTRL+w s 視窗分割
可視模式 v V 選擇塊 行
指令模式 / 搜尋 :n,md 從n到m删除 :n,ms/原内容( 可正則)/ 新内容/g :wq 儲存退出 :q! 強制退出
設定:
nu ai sm 括号比對 syntax 文法
其他問題:
編碼:
可設定目前主機 LANG=
斷行符:
UNIX2dos -k 檔案
dos2UNIX -k 檔案
語系編碼轉換:
iconv -f 原編碼 -t 現編碼 filename newfilenamew
}
磁盤管理: 建立普通 {
磁盤有實體和邏輯結果組成(機械式)
實體結構: 扇區 512KB 實體結構最小機關 扇面 柱面 分區最小機關 (千層餅??)
在磁盤的第一個扇區 有446KB的MBR主引導 分區表64KB (16*4) 2KB辨別位
邏輯結構: 磁盤被分為許多block, inode
衆多的block組成了block group -> super block,檔案描述資訊,inode talbe,block bitmap,inode bitmap,block
檔案描述資訊: 描述上述東西的存在
super block: 描述block,inode數量 使用量
block: 最小邏輯機關 1K 2K 4K
inode: 記錄block12個block的位置 共128byte 一般情況下擁有12個直接 1一個間接 1個雙間接 1個三間接
block bitmap: 記錄block的使用情況
inode bitmap: 記錄inode的使用情況
常見檔案系統格式:
基本: ext2 ext3 ext4 Reiserfs(小) JFS vfat xfs(大)
叢集: GFS2 , OCFS2
網路: NFS , smbfs
CD光牒: ISO9660
交換分區: SWAP
分區磁盤分為兩種情況:
1, 已存在系統
kpartx -i /dev/sda
kpartx -af /dev/sda
partx -a /dev/sda
2, 新磁盤
操作:
檢視cat /proc/partitions 磁盤資訊
1. 分區 fdisk sfdisk parted
2. 格式化 mkfs mkfs.exts mk2efs (在格式化也可對檔案系統調整)
3. 資訊檢視/調整
blkid (格式化後檔案系統資訊)
dumpe2fs (超級塊資訊)
tune2fs (調整檔案系統選項)
e2label (改變label)
hdparm (硬體資訊)
resize2fs (從新調整大小)
4. 檢測 fsck e2fsck
5. 交換分區 mkswap swapon/off
6. 挂載 mount umount (手動,開機)
過程中需要使用到的資訊
fuser 挂載占用 df 磁盤空閑狀态 du 目錄評估占用 dd 填充 ln 連結
}
磁盤管理: raid {
HBA 檢視機器raid情況 /proc/mdstat
raid的出現是為了 1.提高 讀 a 寫 b 速度 2. 容錯能力 3. 備份 4.使用率 5. 至少數量
raid 0 yes no no 100 2
raid 1 1a yes yes 50 2
raid 5 yes yes no n-1/n 3
raid01 1a yes yes n-2/n 4
raid10 yes yes yes n-2/n 4
jbad 連接配接磁盤
執行個體:建立一個空間大小為10G的RAID5裝置,要求其chunk大小為1024K,格式經為ext4檔案系統,開機可自動挂載至/backup目錄,并支援acl功能;
mdadm -C /dev/md0 -a yes -l 5 -n 4 -c 1024K /dev/sdb /dev/sdc /dev/sdd /dev/sde
# 隻有陣列完畢才可以格式化
mkfs -t ext4 /dev/md0
#調整絕大數磁盤資訊
tune2fs -o acl /dev/md0
可以調整目錄的label的名字
e2label /dev/md0 "xxxx"
dumpe2fs -h /dev/md0
#編輯/etc/fstab
/dev/md0 /backup ext4 defaults 0 0
UUID=5dc72528-30ef-44cd-a38f-7fd0ee176a46 /backup ext4 defaults 0 0
}
磁盤管理: LVM {
LVM: 邏輯卷管理器(可彈性管理磁盤政策) 擴容不需要停止業務 縮容需要停止業務
分區之後的實體盤加入到卷組中(邏輯概念)之後假如邏輯卷(中間多了一個中間層,由核心驅動完成,核心提供了這樣的中間層)
流程:
1. 将需要假如LVM的磁盤格式化
2. pvcreate /dev/sd{a-z}
3. vgcreate -s 16M vgname /dev/sd{a-z}
4. lvcreate -L 容量 lvname vgname
5. 挂載 /dev/vgname/lvname
動态其他操作:
1. 擴容 先擴大實體容量,再邏輯容量
2. 縮小 先縮小邏輯容量,再實體容量
練習:
1、建立一個由兩個實體卷組成大小為20G的卷組myvg,要求PE大小16M;而後建立 大小為7G邏輯卷mylv1,要求其檔案系統為ext4,塊大小為2048,且開機能自動挂載至/users;
2、建立使用者openstack,其家目錄為/users/openstack,而後切換至openstack使用者,複制一些檔案至其家目錄中;
3、縮減mylv1至5G大小;而後切換至openstack使用者,確定其資料沒有丢失;
4、對mylv1建立快照卷snap-mylv1,并通過其備份資料至/tmp/user.tar.bz2;
#1
pvscan
pvcreate /dev/sd{b,c}
pvdisplay
vgcreate -s 16M test /dev/sd{b,c}
vgscan
vgdisplay
lvcreate -L 7G -n mylv test
mkfs -t ext4 /dev/test/mylv
tune2fs -r 2048 /dev/test/mylv
vi /etc/mdadm.conf
ARRAY /dev/md0 UUID=5dc72528-30ef-44cd-a38f-7fd0ee176a46
#編輯/etc/fstab
/dev/md0 /backup ext4 defaults 0 0
UUID=5dc72528-30ef-44cd-a38f-7fd0ee176a46 /backup ext4 defaults 0 0
#2
useradd openstack -d /users
su openstack
cp -rf /var/* /users
#3
pvdisplay
umount /dev/test/mylv
e2fsck -f /dev/test/mylv
resize2fs /dev/test/mylv 5G
mount /dev/test/mylv /users
lvresize -L 5G /dev/test/mylv
#4 快照
lvcreate -L 50M -s -n mylv-snap /dev/test/mylv
mkdir /snap
mount /dev/test/mylv-snap /snap
tar -jcf /snap/* > /tmp/user.tar.bz2
tar -jcv -f /tmp/user.tar.bz2 /snap/
}
壓縮,歸檔工具: {
這裡包含壓縮和歸檔的過程,兩個在這裡就不區分了,因為使用非常簡單
tar -c 建立壓縮/歸檔檔案夾
-x 解壓壓縮/歸檔檔案
-f 欲解壓壓縮的檔案或包
-j 對應使用gzip壓縮工具
-z 對應使用bzip2壓縮工具
-J 對應使用xz壓縮工具
-v 檢視解壓壓縮過程
執行個體 在解壓和壓縮的過程 j J z 都可以省略 自動判斷字尾選擇壓縮工具
tar -xf nginx-1.4.2.tar.gz 解壓
tar -cf axel-2.4.tar.bz axel-2.4/ 壓縮
}