20140910V1
20141010V2
一、 Linux基礎入門和架構瞭解
1)Linux操作系統
1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB
操作系統(OS)用於管理與驅動硬件; 內核kernal
shell調度內核
1971~1973 Bell實驗室的KenThompson利用彙編語言寫成unix前身,後由DennisRitchie以C程序語言進行改寫,稱爲UNIX
1977 BillJoy釋出BSD(BerkeleySoftwareDistribution),這些稱爲UNIXlike
1984 AndrewTannenbaum製作出Minix操作系統,同年RichardStallman提倡GNU項目,並規範出GPL授權模式
1991,芬蘭人LinuxTorvalds開發出Linux系統,GNU軟件開發團隊
Linux distributions是"Linux Kernel + Free Software + Documentations(Tools) + 可完全安裝的程序"
2)Linux根文件系統
/boot /dev /dev /etc /home /root /lib /media /mnt /opt /proc /sys /tmp /vrp
3)shell概念
什麼是shell: 用戶使用 shell——>內核——>硬件
認識bash: BourneSHell(sh)、sun裏默認的CSHell,商業上常用的KSHell,還有TCSH
Bourne Again Shell(bash)這個shell是BourneShell的增強版本
操作系統有多少可以使用shell,可以檢查/etc/shells這個文件
type [-tpa] name
-t : file 外部命令 alias 別名所設置的命令 builtin 表示bash內置功能命令
二、 Linux命令使用和管理
1)基本命令深入講解
首先命令登入的樣式:[用戶名@主機名 ~]$ ,其中~是變量,當前所在目錄,而$則是用戶賬戶提示符,#爲root賬戶提示符。
命令執行格式: command [-options] parameter1 parameter2……
基礎命令: date 顯示日期,修改日期
cal 顯示日曆
bc 簡單好用的計算器
重要的熱鍵: [Tab],[Ctrl]+c,[Ctrl]+d
查詢功能說明:man,info,--help
超簡單文本編輯器:nano
正確關機方法: 1. 查看系統使用狀態 who, netstat -a, ps -aux
2. 將數據同步寫入硬盤 sync
3. 慣用關機命令 shutdown
重啓、關機 reboot halt poweroff
切換執行等級:init
2)用戶權限及權限管理詳解
linux文件屬性
文件權限 連接數 文件所屬用戶組 文件大小 文件最後被修改時間 文件名
系統語言配置文件位置: /etc/sysconfig/i18n
目錄文件權限意義:rxw 4 2 1
chmod chown chgrp eg:chmod (u g o a) (+ - =) (rwx) 文件or目錄
Linux的賬號與用戶組:uid gid
用戶組類別: 管理組 普通用戶組
私有組 基本組 附加組
用戶與用戶組
存放賬號路徑 /etc/passwd 存放密碼路徑/etc/shadow
useradd userdel
passwd usermod
acl
su
sudo
查詢用戶: w who last lastlog
用戶對談: write mesg wall
3)常用文件管理命令
文件種類與擴展名:文件種類 普通文件(-)( 純文本文件 二進制文件 數據格式文件)
目錄(d)
連接文件(l)
設備與設備文件(b)( c )
套接字(s)
管道(p)
Linux文件擴展名 Linux擴展名沒有真正意義,只是用於幫助瞭解,
Ext2/3文件系統時,單一文件名長度爲255個字符,包含完整路徑名的文件名爲4096字符
Linux目錄配置標準:FHS(Filesystem Hierarchy Standard)
相對路徑 從根目錄開始的路徑
絕對路徑
pwd顯示路徑 cd切換路徑 ls列出文件
mkdir創建目錄 rmdir刪除目錄
umask
chattr lsattr
SUID SGID SBIT
file查看文件屬性
文件查找 where whereis
locate
find [PATH] [option] [action] 1. 與時間有關的參數:-atime -ctime -mtime
2. 與用戶或用戶組有關的參數:-uid -gid -user -group -nouser -nogroup
3. 與文件權限及名稱有關的參數:-name -size -type -perm
4. 其他可進行的操作:-exec -print
rm刪除文件 mv移動文件 cp複製文件 touch創建文件
文本處理命令: cat more less head tail
文本編輯器: vi vim
VIM按鍵說明: 第一部分 一般模式
h光標左移一個字符,j光標下移一個字符,k光標上移一個字符,l光標右移一個字符
[crtl]+f 相當於page down [crtl]+b 相當於page down
[crtl]+d屏幕向下移動半頁 [crtl]+u 屏幕向上移動半頁
n<space>
0或功能鍵home移動到這一行最前面 $或功能鍵end移動到這一行最後面
H光標移動到屏幕上方第一個字符 M光標移動到屏幕中央行第一個字符 L光標移動到屏幕下方第一個字符
G移動到這個文件最後一行 nG移動到這個文件第n行 gg移動到第一行 N[enter]光標向下移動n行
/word向下尋找word字符串 ?word向上尋找word字符串 n繼續向下查找 N繼續向上查找
:n1,n2s/word1/word2/g 在n1行到n2行中間查找word1字符串替換爲word2
:1,$s/word1/word2/g 從第一行到最後一行中查找word1字符串並替換爲word2
:1,$s/word1/word2/gc 從第一行到最後一行中查找word1字符串並替換爲word2。替換前提示用戶確認。
x 向後刪除一個字符 X向前刪除一個字符 nx連續向後刪除n個字符
dd刪除光標所在那一行 ndd刪除光標所在向下n行 d1G刪除光標所在到第一行所有數據
dG刪除光標到最後一行數據 d$刪除從光標所在到該行行尾所有數據 d0刪除從光標所在到該行最前面所有數據
yy複製光標所在的那一行 nyy複製光標所在向下n行 y1G複製光標所在行到第n行數據
yG複製光標到最後一行數據 y$複製從光標所在到該行行尾所有數據 y0複製從光標所在到該行最前面所有數據
p將已複製數據貼在下一行 P將已經複製數據貼在上一行
j將光標所在行與下一行數據結合成一行 c重複刪除多個數據,例如[10cj]
u撤銷上一次操作 [ctrl]+r重做上一次操作 .重複前一個操作
第二部分 編輯模式
i,I 進入插入模式,從光標所在開始插入
a,A 進入插入模式,從光標所在下一個字符開始插入
o,O 進入插入模式,從光標所在的下一行開始插入
r,R 進入替換模式,只會替換光標所在的那一個字符
第三部分 命令行模式
:w 保存 ZZ 沒有改動,不保存離開;改動了,保存離開
:w! 強制保存 :w [filename] 將編輯的文件保存成另一個文件
:q 離開 :r [filename] 將編輯的數據讀入另一文件
:q! 強制離開 :n1,n2 w [filename] 將n1到n2數據保存成filename
:wq 保存後離開 :! Command 暫時離開vi到命令行執行command的顯示結果
:set nu 設置行號
:set nonu 取消行號
vim被編輯時,會生成一個swp文件,如果有人已經在編輯,或不正常關閉,會有提示告警。
vim塊選擇工具(visual block)
v字符選擇,光標經過地方反白 V行選擇,光標經過的行反白 [ctrl]+v塊選擇,可以用長方形方式選擇數據
y將反白地方複製起來 d將反白地方刪除
多文本編輯 :n編輯下一個文件 :N上一個文件 :files列出目前這個vim打開所有文件
多窗口功能 :sp [filename]打開一個新窗口 [ctrl]+w+(jkq)
vim環境設置與記錄: ~/.vimrc , ~/.viminfo記錄vim操作記錄
3) bashshell深入瞭解
bash shell的功能:
1. [Tab]按一次爲命令補全,按兩次顯示所有命令
2. alias
3. histoy,記錄存放在/.bash_history中
命令歷史使用技巧 !n !-n !! ![string] ;ctrl+r搜索歷史命令
4. 作業控制、前臺、後臺控制(job control,foreground,background)
5. 程序腳本(shell script)
6. 通配符(wildcard)
shell的環境變量:
echo unset
變量的設置規則:1. 變量與變量內容以一個“=”連接,如 myname=Vbird
2. 等號兩邊不能直接接空格符
3. 變量名稱不能以數字開頭
4. 變量內容若有空格字符,可以使用雙引號(能保有特殊字符原有特性)or單引號將變量內容結合起來
5. 可用轉義字符 \
6. 在一串命令中需要其他命令提供信息使用“`` ,$”,如version=$(uname -r),再echo $version
7. 爲了增加變量內容可以這樣:PATH="$PATH":/home/bin
8. 若該變量要在其他子進程執行,則需export PATH
9. 通常大寫字符爲系統默認變量,自定義的變量使用小寫字符
10.取消變量方法爲:unset 變量名稱
用evn查看環境變量與常見環境變量說明:
HOME 代表用戶主文件夾
SHELL 目前環境使用的默認shell
MISTSIZE 命令歷史緩衝區大小
MAIL 收信時系統會去讀取的郵件信箱文件
PATH 命令搜索路徑
LANG 系統語言環境
RANDOM 隨機數的變量
也用set查看環境變量
$本身也是變量,是目前shell的線程代號(PID),?也是變量,是上一個執行命令所回傳的值
export 自定義變量轉成環境變量: export 變量名稱
影響顯示結果的語系變量 locale ;cat /etc/sysconfig/i18n
變量鍵盤讀取、數組與聲明:read array declare
與文件系統系統及程序的限制關係ulimit: ulimit -a 顯示所有限制
變量內容刪除、替代及替換: eg: echo "this dirctory is $(pwd)" ; touch file-$(date +%F-%H%M%S).txt
終端機的環境設置:stty,set
組合按鍵 ^c終止目前命令 ^d ^m ^s ^q ^u ^z暫停目前命令
通配符與特殊符號: 通配符 * ? [] [-] [^]
特殊符號 # \ | ; ~ $ & ! /
> >> < <<
'' "" ``
()中間爲子shell的起始與結束 {}中間爲命令塊的組合
數據流重定向: > < >> <<
命令執行判斷依據: ; 不考慮命令相關性,直接執行
&& 前面命令正確執行接下來命令
|| 前面命令執行錯誤接着執行第二條
管道命令(pipe): |
選取命令 grep [-acinv] [--color=auto] '查找字符串' filename
cut '分隔字符' filename 一般用法:cut -d '分隔字符' -f fields
排序命令: sort
重複數據顯示一遍:uniq
文字統計: wc
雙向重定向: tee
字符轉換命令 : tr,col,join,paste,expand
切割命令:split [-bl] file prefix eg:split -b 300k /etc/tmermcap termcap
參數代換:xargs
關於減號-的用途
4)grep及正則表達式
1. 正則表達式就是處理字符串的方法
2. 特殊符號意義:[:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:]
[:lower:] [:print:] [:punct:] [:upper:] [:space:] [:xdigit:]
3. 基礎正則表達式字符
^word word$ \ * [list] [n1-n2] [^list] \{n,m\}
4. sed工具
5. 擴展正則表達式
6. 文件的格式化與相關處理:printf awk
7. 文件比較工具
8. 文件打印準備
5)運維自動化shell
腳本格式: shell script
#!/bin/bash
#explain
path
progam
條件判斷: if...then
case...esac
fuction
循環判斷: while do done,until do done
for...do...done
for...do...done
三、 Linux磁盤及文件系統管理
Linux最傳統的文件系統使用的是Ext2(現在應該都是Ext3)
1) 硬盤的組成與分區: 扇區 柱面
第一個扇區最重要,裏面有硬盤主引導記錄(MBR),及分區表(partition table)
/dev/sd[a-p][1-15]: 爲SCSI,SATA,USB,BLASH
/dev/hd[a-d][1-63]: 爲IDE
* 主分區與擴展分區最多可以有4個(硬盤的限制)
* 擴展分區最多只能有一個(操作系統限制)
* 邏輯分區是由擴展分區持續分出來的分區
* 能夠被格式化後作爲數據訪問的分區爲主要分區和邏輯分區,擴展分區無法格式化
* 邏輯分區數量依操作系統而不同。Linux系統中,IDE硬盤最多59個邏輯分區(5號~63號),SATA硬盤則是11個邏輯分區(5號~15號)
2)Ext2系統(Linux second extended file system,Ext2fs)
indoe: 文件權限與文件屬性
block: 實際數據則放置到data block,另還有一個超級superblock記錄整個文件系統的整體信息
dumper2fs [-bh] 設備文件名
ext2文件系統示意圖
啓動扇區
Boot sector Block group1 Block group2 Block group3 Block groupn...
inodetable(inode表格),superblock(超級塊)
ext2/ext3 文件的訪問與日誌文件系統的功能
3)文件系統的簡單操作
df du
連接文件ln: ln -s 源文件 目標文件
4)新增一塊硬盤: 磁盤分區、格式化、檢驗與掛載
fdisk,mkfs mke2fs,fsck badblocks, mount
fdisk -l 設備名稱
fdisk 設備名 ==>接着出現如下行
command(m for help): 【輸入m】 (d刪除一個分區 n新增一個分區 p在屏幕上顯示分區表 q離開 w保存)
partprobe (強制讓內核重新找一次分區表)
mkfs -t ext3 設備名
fsck
mkdir
mount
5) 設置開機掛載/etc/fstab 及/etc/mtab ;特殊設備loop
6) 內存交換空間swap
7) Linux常見壓縮命令: compress; gzip zcat; bzip2 bzcat; tar
compress壓縮文件 *.z; gzip壓縮文件 *.gz; bzip2壓縮文件 *.bz2;
tar打包文件 *.tar; 經過gzip壓縮後打包文件 *.tar.gz; 經過bzip2壓縮後打包文件 *.tar.bz2
8) 完整備份工具: dump restore
9) 光盤寫入工具: mkisofs cdrecord
10)其他常見的壓縮與備份工具: dd cpio
四、 企業級yum軟件管理
rpm
yum 本地yum平臺搭建
聯網yum搭建
五、 Linux使用管理和進程管理
1)Quota
2)raid
3)lvm:
4)crontab: 分 時 日 月 周
5)進程管理:ps
ps -l顯示的數據 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
ps aux顯示的數據 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
top
pstree
kill
6)系統資源查看:free uname uptime netstat dmesg vmstat
7)/proc
8)SELinux
9)系統服務 daemons
stand_alone
super daemon
daemon的工作形態類型:signal-control interval-control
daemon的啓動腳本及配置文件位置: /etc/init.d/* 啓動腳本放置處
/etc/sysconfig/* 各服務的初始化環境配置文件
/etc/xinted.conf,/etc/xinetd.d/* super daemon配置文件
/etc/* 各服務各自的配置文件
/var/lib/* 各服務產生的數據庫
/var/run* 各服務的程序的PID記錄處
standalone的啓動方式:
superdaemon的啓動方式:
解析super daemon的配置文件: 默認配置文件 xinetd.conf
=
+=
-=
/etc/hosts.allow,/etc/hosts.deny管理
TCP Wrappers特殊功能
chkconfig:管理系統服務默認開機啓動與否
chkconfig --list [服務名稱]
chkconfig [--level [0123456]] [服務名稱] [on|off]
10)日誌與分析
常見的日誌文件: /var/log/cron
/var/log/dmesg
/var/log/lastlog
/var/log/maillog或/var/log/mail/*
/var/log/messages
/var/log/secure
/var/log/wtmp,/var/log/faillog
/var/log/httpd/*,/var/log/news/*,/var/log/samba/*
日誌服務所需相關服務daemon與進程: syslogd 主要登錄系統與網絡等服務的信息
klogd 主要登錄內核產生的各項信息
logrotate 主要進行日誌文件的輪替功能
syslogd:記錄日誌文件的服務
syslogd的配置文件 /etc/syslog.conf
服務名稱[.=!]信息等級 信息記錄的文件名或設備或主機
logrotate
logwatch
11)每週系統備份的腳本
六、 Linux系統管理員
1) 啓動流程、管理模塊與loader
Linux系統啓動過程:1 加載BIOS的硬件信息與進行自我測試,並依據設置取得第一個可啓動的設備
2 讀取並執行第一個啓動設備內MBR的boot Loader(即是grub,spfdisk等程序)
3 依據boot loader的設置加載kernel,kernel會開始檢測硬件與加載驅動程序
4 在硬件驅動成功後,Kernel會主動調用init進程,而init會取得run-level信息
5 init執行/etc/rc.d/rc.sysinit文件來準備軟件執行的操作環境
6 init執行run-level的各個服務啓動(script方式)
7 init執行/etc/rc.d/rc.local文件
8 init執行終端機模擬程序mingetty來啓動login進程,最後就等待用戶登錄
七、 Linux精簡系統和內核管理裁剪
kernel
grub