一、Linux的安裝及相關配置
計算機作業系統簡介:
作業系統是一個用來協調、管理和控制計算機硬體和軟體資源的系統程式,它位于硬體和應用程式之間
核心的定義:
管理和控制程式,負責管理計算機的所有實體資源,其中包括檔案系統、記憶體管理、裝置管理和程序管理
作業系統使用者界面:
圖形界面、指令行界面
LINUX主要發行版:
CENTOS、RHEL、FEDORA、UBUNTU、SUSE
安裝過程中的各選項含義:
a) install or upgrade an existing system:安裝或更新現有的系統
b) install system witn basic video driver:安裝系統和基本的視訊驅動程式
c) rescue installed system:救援安裝系統
d) boot from local drive:從本地硬碟啟動
二、UNIX和Linux作業系統概述
UNIX的定義:
計算機作業系統,用來協調、管理和控制計算機硬體和軟體資源的控制程式
Linux簡介:
是一套免費使用和自由傳播的類Unix作業系統,基于POSIX和UNIX的多使用者、多任務、支援多線程和多CPU的作業系統。
Linux作業系統主要用途:
主要用于伺服器,特别是網絡伺服器
切換虛拟終端: Ctrl+Alt+F[1~6]
三、Linux指令及擷取幫助
Linux指令的文法格式:
指令 【選項】 【參數】
whoami指令:
列出目前登陸Linux系統所使用的使用者名(賬号)
date、cal、和clear指令:
date:顯示系統目前的日期和時間
cal:顯示某月的月曆
clear:清除螢幕
su和passwd指令
su指令:從目前的使用者切換到另一個指定的其他使用者,
切到root使用者的指令:su – root
ubuntu版本切換到root使用者:su
passwd指令:
修改dog使用者密碼的指令:passwd dog
useradd tom指令:建立tom使用者
man指令:
擷取某個Linux指令的使用說明
檢視su指令的使用說明的指令為:man su
檢視ls指令幫助的指令為:(不使用man方法)
ls –-help
ssh連接配接伺服器指令:
ssh [email protected]
四、目錄檔案的浏覽、管理及維護
Linux檔案系統的層次結構:
檔案和目錄都被組織成一個以根節點開始的倒置的樹狀結構
目錄的定義:
可以存放檔案和其他的子目錄
頂層根目錄:
用“/”來表示根目錄
檔案系統中的兩個特殊目錄:
. 表示目前目錄,即使用者所在的工作目錄
.. 表示父目錄,即目前目錄的上一層目錄
Linux中重要目錄:
bin目錄:用來存放常用的可執行檔案
sbin目錄:用來存放系統的可執行檔案
家目錄:超級使用者root的家目錄是/root,普通使用者家目錄存放在/home,使用使用者名作為最後一級目錄,如cat使用者的家目錄為/home/cat
dev目錄:裝置檔案目錄
etc目錄:配置檔案目錄
挂載點(目錄):可移除式硬體會被挂載在/media或/mnt目錄之下
絕對和相對路徑: 絕對路徑以一個正斜線(/)開始,檔案系統的根節點開始找,是檔案位置的完整路标,相對路徑不是以正斜線(/)開始,從目前目錄到要查找的對象
pwd指令:确定現在所在的工作目錄
cd: 切換目前目錄
cd .. 進入上一級目錄
cd ~ 切換到使用者的家目錄
cd – 切換到使用者之前的工作目錄
cd 目錄名 切換到指定的目錄
ls指令: 列出目前目錄(預設為目前目錄)或指定目錄中的内容
ls -a 列出目錄下的所有檔案,包括以“.”開頭的隐含檔案
ls –l 列出某個目錄中每一個檔案的詳細資料
cp指令 将檔案(可以是多個)複制成一個指定的目的檔案或複制到一個指定的目标目錄中
格式: cp 源檔案 目标檔案
cp –r 遞歸地複制目錄
cp –f 目标檔案已經存在的時候不詢問直接強制複制
mv指令 :移動檔案和目錄,重命名檔案和目錄
mkdir指令:建立目錄
touch指令:建立檔案
rm指令:删除檔案
–r:遞歸地删除目錄
–f:強制删除
rmdir或rm –r指令:删除目錄
cat指令: 以隻讀的方式顯示整個檔案的内容
head指令浏覽檔案中的内容:預設顯示檔案前10行, -n 改變顯示的行數
tail指令: 浏覽檔案中的内容,預設顯示檔案最後10行,-n 顯示從檔案末尾算起的n行
more指令: 分頁浏覽
五、使用者、群組和權限
使用者及passwd檔案:使用者資訊資料庫
a) 第1個字段(列)記錄的是這個使用者的名字(在建立使用者時root使用者起的)。
b) 第2個字段(列)如果是x,表示該使用者登入Linux系統時必須使用密碼;如果為空,則該使用者在登入時無須提供密碼。
c) 第3個字段(列)記錄的是這個使用者的uid。
d) 第4個字段(列)記錄的是這個使用者所屬群組的gid。
e) 第5個字段(列)記錄的是有關這個使用者的注釋資訊(如全名或通信位址)。
f) 第6個字段(列)記錄的是這個使用者的家目錄的路徑。
g) 第7個字段(列)記錄的是這個使用者登入後,第一個要執行的程序。
shadow檔案:使用者密碼的資料庫
a) 第1個字段(列)是使用者名。
b) 第2個字段(列)是MD5加密過的密碼
群組及group檔案:存放群組資訊的資料庫:
a) 第1個字段是這個群組的名字。
b) 第2個字段中的x表示這個群組在登入Linux系統時必須使用密碼。
c) 第3個字段記錄的是這個群組的gid。
d) 第4個字段記錄的是這個群組裡還有哪些群組成員。
useradd添加使用者指令:
a) –u:指定使用者的UID
b) –g:指定使用者所屬的群組
c) –d:指定使用者的家目錄
d) –c:指定使用者的備注資訊
e) –s:指定使用者所用的shell
例如:在系統中新增一個使用者user01,屬組為police以及uid為600的指令:
useradd –u 600 –g police user01
usermod指令修改使用者賬戶:
a) –u:修改使用者的UID
b) –g:修改使用者的GID
c) –G:将一個使用者加入到指定的群組中
d) –d:修改使用者的家目錄
e) –c:修改使用者的備注資訊
f) –s:修改使用者所用的shell
-L:将使用者的賬号鎖住
-U:将使用者的賬号解鎖
a) 修改babydog4使用者的家目錄為/home/babies的指令:
usermod –d /home/babies babydog4
b) 将babydog4這個使用者添加到babydog6這個群組中的指令:
usermod –G babydog6 babydog4
c) 将babydog4這個使用者的的gid變更為dog群組的指令:
usermod –g dog babydog4
userdel指令:删除使用者賬号
–r 删除使用者的同時删除這個使用者的家目錄及其郵箱
groupadd指令:群組的管理
groupadd指令的功能:建立一個新的群組賬号
–g:指定群組的GID
–n:修改群組的名稱
groupdel指令的功能:删除一個群組賬号
六、使用者、群組及權限的深入讨論
ls –l指令:檢視檔案上所設定的權限
root使用者及檔案的安全控制
Linux系統所有使用者分3類:所有者(屬主)、同組使用者(屬組)、非同組的其他使用者(通路使用者)
Linux作業系統在權限:
r:表示read權限,閱讀檔案或者ls指令列出目錄内容的權限
w:表示write權限,編輯檔案或者在一個目錄中建立和删除檔案的權限
x:表示execute權限,執行程式或者使用cd指令切換到這個目錄以及使用
chown修改檔案的屬主
chown 屬主:屬組 檔案
chown :屬組 檔案
chown 屬主 檔案
例:修改檔案file1的屬主為root的指令為:chown root file1
chgrp修改檔案的屬組:
chgrp 屬組 檔案
例:修改檔案file1的屬組為wg的指令為:chgrp wg file1
chmod指令:設定或更改檔案或目錄上的權限
- 要設定或更改誰的權限狀态:
u:表示所有者(owner)的權限。
g:表示群組(group)的權限。
o:表示既不是owner也不與owner在同一個group的其他使用者(other)的權限。
a:表示以上3組,也就是所有使用者(all)的權限。
- 運算符:
+:表示加入權限
-:表示去掉權限
=:表示設定權限
- 權限:
r:表示read(讀)權限。
w:表示write(寫)權限。
X:表示execut(執行)權限。
例:
a) 在dog_wolf檔案上添加所有者和同組使用者的可執行權限的指令:
chmod ug+x dog_wolf
b) 在babydog目錄上為其他使用者添加寫權限的指令:
chmod o+w babydog
數字表示法:使用一組三位數的數字來表示檔案或目錄上的權限狀态:
第1個數字代表所有者(owner)的權限(u)。
第2個數字代表群組(group)的權限(g)。
第3個數字代表其他使用者(other)的權限(o)。
4:表示具有讀(read)權限。
2:表示具有寫(write)權限。
1:表示具有執行(execute)權限。
0:表示沒有相應的權限。
例:
使用數字表示法對owner開放/home/dog/babydog目錄和其中所有檔案的一切權限,
但是對同組使用者開放讀和執行權限,而對其他使用者隻開放讀權限的指令:
chmod -R 754 /home/dog/babydog
七、正文處理指令及tar指令
cat指令實作檔案的縱向合并:
例如:使用cat指令将baby.age、baby.kg和baby.sex這三個檔案縱向合并為baby檔案的方法:
cat baby.age baby.kg baby.sex >baby
使用cat指令将baby.age檔案的内容添加到baby2檔案中的方法:
cat baby.age >>baby2
歸檔檔案和歸檔技術:
tar指令的常用選項:(zxvf常用于解壓的參數組合)
z:使用gzip壓縮算法來壓縮打包後的檔案。
x:從tar檔案中抽取檔案。
v:顯示所打包的檔案的詳細資訊,v是verbose的第1個字母。
f:指定歸檔檔案或錄音帶(也可能是軟碟)裝置(一般都要選)。
t:列出tar檔案中目錄的内容。
c:建立一個新的tar檔案。
j:使用bzip2壓縮算法來壓縮打包後的檔案。
例如:使用tar指令将arch目錄打包成一個名為arch.tar的歸檔檔案的方法(要求顯示所有打包的檔案和目錄):
tar cvf arch.tar arch
例如:使用tar指令顯示arch.tar這個歸檔檔案(包)中的所有檔案的方法:
tar tf arch.tar
例如:使用tar指令恢複arch.tar中的全部内容的方法:
tar xvf arch.tar -C 路徑
檔案的壓縮和解壓縮:
- gzip指令和gunzip指令:
例如:将檔案file1壓縮成.gz格式的壓縮包應該使用的指令為:
gzip file1 –c > /路徑/name.gz
例如:将壓縮檔案file1.gz解壓縮的指令為:
gunzip file1.gz >
- bzip2指令和bunzip2指令
例如:将檔案file1壓縮成.bz2格式的壓縮包應該使用的指令為:
bzip2 file1 >
例如:将壓縮檔案file1.bz2解壓縮的指令為:
bunzip2 file1.bz2 >
- tar指令的同時進行壓縮和解壓縮
例如:使用tar指令将arch目錄打包而且同時使用gzip的技術壓縮打包後檔案的方法(打包後的檔案名為arch.tar.gz):
tar cvfz arch.tar.gz arch
例如:使用tar指令将arch目錄打包而且同時使用bzip2的技術壓縮打包後檔案的方法(打包後的檔案名為rch.tar.bz2):tar cvfj arch.tar.bz2 arch
八、利用vi編輯器建立和編輯正文檔案
vi是一個UNIX和Linux系統内嵌的标準正文(文字)編輯器,用來建立和修改正文檔案
vi編輯器的3中基本模式
指令行模式:可執行修改、複制、移動、粘貼和删除正文等指令
編輯模式:可往一個檔案中輸入正文,使用ESC鍵傳回指令行模式
擴充模式:使用一些進階編輯指令,如搜尋和替代字元串、存盤或退出vi編輯器等,在指令行模式中輸入冒号(:)
vi編輯器中光标的移動
$:光标移動到目前行的結尾
0:光标移動到目前行的開始
插入模式
a:進入插入模式并在光标之後進行添加。
i:進入插入模式并在光标之前進行插入。
o:進入插入模式并在目前(光标所在)行之下開啟新的一行
指令行模式下删除與複制:
dd:删除光标所在那一行
ndd:n為數字,删除光标所在的向下n行,例:20dd表删除20行
yy:複制光标所在那一行
nyy:n為數字,複制光标所在的向下n行
粘貼指令
p:将已複制的資料在光标下一行粘貼
P:将已複制的資料在光标上一行粘貼
複原和重做指令
U:複原前一個操作
ctrl+r:重做上一次操作
擴充模式與檔案的存儲和退出
:w 将檔案存入/寫入磁盤
:q 退出vi編輯器(并不存盤)
:wq 将檔案存入/寫入磁盤并退出vi編輯器
:q! 不儲存并退出
快速移動光标在檔案中的位置
H 光标移動到螢幕的最上方那一行的第一個字元
M 光标移動到這個螢幕的中央那一行的第一個字元
L 光标移動到這個螢幕的最下那一行的第一個字元
九、系統的初始化和服務
Linux系統引導的順序 :
BIOS——MBR——init程式
BIOS:硬體與軟體之間的接口
GRUB:多重作業系統啟動管理器,grub的配置檔案為:grub.conf
核心的初始化和init的初始化,init的配置檔案為:/etc/inittab
關閉系統及重新開機系統:
-
關閉系統的指令:
systemctl poweroff -i
halt
poweroff
init 0
-
重新開機系統的指令:
shutdown -r now
reboot
init 6
Ctrl+Alt+Delete鍵
十、系統監控
系統監視和程序控制工具—top:
top指令是Linux下常用的性能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似于Windows的任務管理器。
-
top指令 系統狀态:
第一行是任務隊列資訊
第二、三行為程序和CPU的資訊
第四五行為記憶體資訊
cpu使用率與load average
cpu使用率:正常情況,cpu使用率<70%
-
cpu負載:
cpu負載<=1:能正常應付; cpu負載>1:超負荷運轉
多核cpu, load average 應該 <= cpu核數 * 0.7
cpu使用率和cpu負載過高,都是不好的現象,但也可能出現,低使用率,高負載的情況
free指令:顯示記憶體的使用狀态
buffer和cache:buffer是用于存放要輸出到disk(塊裝置)的資料的,而cache是存放從disk上讀出的資料。這二者是為了提高IO性能的,并由OS管理。
free表示的是目前完全沒有被程式使用的記憶體;而cache在有需要時,是可以被釋放出來以供其它程序使用。
系統中程序的監控—ps:顯示目前程序的狀态
Ps –aux 顯示所有的與使用者相關的完整資訊
kill指令終止程序
kill -9指令殺死程序
pgrep指令的功能:通過名稱或其他屬性查找程序
如:查找名為firefox的程序的指令為:pgrep firefox
pkill指令:通過名稱或其他屬性發信号給程序
如:殺死名為firefox的程序的指令為:pkill firefox
結合效果:ps -aux | grep 程序号
ps -ef | grep ssh # 過濾程序
十一、硬碟分區、格式化及檔案系統的管理一
硬體裝置與檔案名的對應關系:
在Linux系統中,每個裝置都被當作一個檔案來對待。
IDE硬碟: /dev/hd[a-a]
SCSI硬碟: /dev/sd[a-p]
U盤: /dev/sd[a-p]
CDROM: /dev/sr0
硬碟的結構及硬碟分區:進行硬碟分區
更容易管理和控制系統,因為相關的檔案和目錄都放在一個分區中。
系統效率更高。
可以限制使用者使用硬碟的份額(磁盤空間的大小)。
更容易備份和恢複。
硬碟的邏輯結構:
劃分成塊、磁道、磁柱和分區
塊:塊是盤片上尋址(通路)的最小機關,一個塊可以存儲一定位元組的資料
磁道:磁道是由一系列頭尾相連的塊組成的圓圈
磁柱:磁柱是由一疊磁道,由在相同半徑上每個盤面的磁道所組成
分區:分區是由一組相鄰的磁柱所組成
Linux系統中硬碟的分區:
硬碟的分區可以分為主分區、擴充分區和邏輯分區。
在一個硬碟上最多可以劃分出4個主分區。
Linux核心在每個硬碟上可以最多支援:
- a) 在SCSI硬碟上劃分15個分區(優勢好)。
- b) 在IDE硬碟上劃分63個分區(Partitions)。
fdisk和partprobe指令來管理硬碟分區:
-
fdisk指令:建立磁盤分區
d:删除一個(已經存在的)分區,其中d是delete的第1個字母。
l:列出(已經存在的)分區的類型,其中l是list的第1個字母。
m:列出fdisk中使用的所有指令,其中m是menu的第1個字母。
n:添加一個新的分區,其中n是new的第1個字母。
p:列出分區表的内容,其中p是print的第1個字母。
q:退出fdisk,但是不存儲所做的變化,其中q是quit的第1個字母。
t:改變分區系統的id,其中t是title的第1個字母。
w:退出fdisk并存儲所做的變化,其中w是write的第1個字母。
partprobe指令:重新初始化記憶體中核心的分區表
建立檔案系統
- 格式化的定義:将分區中的硬碟空間劃分成大小相等的一些資料塊(Blocks),以及設定這個分區中有多少個i節點可以使用。
- 檔案系統的定義:是作業系統用于明确磁盤或分區上的檔案的方法和資料結構;即在磁盤上組織檔案的方法。
-
常用的檔案系統類型:
ext2:Linux系統中标準的檔案系統
ext3:一種日志式檔案系統
ext4:一種針對ext3系統的擴充日志式檔案系統
lvm:邏輯盤卷管理
iso9660:目前唯一通用的CD光牒檔案系統
-
mkfs指令:格式化磁盤
例如,将分區/dev/sdb1格式化為ext4檔案系統的指令為:
mkfs.ext4 /dev/sdb1
為一個分區設定label(分區名):
-
e2label指令:設定或檢視一個裝置的label名稱
a) 例如:檢視/dev/sdb1分區的label的指令為:
e2label /dev/sdb1
b) 例如:将/dev/sdb1分區的label設定為wg的指令:
e2label /dev/sdb1 wg
十二、硬碟分區、格式化及檔案系統的管理二
檔案系統的挂載與解除安裝:
定義:挂載指将一個裝置(通常是儲存設備)挂接到一個已存在的目錄上
mount指令:實作檔案系統的挂載
例如:将/dev/sdb1分區挂載到/wg目錄上的指令:
mount /dev/sdb1 /wg
umount指令:實作檔案系統的解除安裝
例如:解除安裝/wg上的檔案系統的指令:
umount /wg
虛拟記憶體的概念以及設定與管理:
虛拟記憶體的定義:虛拟記憶體就是一塊硬碟空間被當做記憶體使用,也被稱為交換分區(swap),Linux交換分區的類型為:0x82
mkswap指令:設定交換分區
例如:将分區/dev/sdb2設定為交換分區的指令:mkswap /dev/sdb2
swapon –a指令:啟動全部的交換分區
例如:啟用交換分區/dev/sdb2的指令:swapon /dev/sdb2
swapon –s指令:列出目前正在使用的所有系統交換分區的狀态
i節點:
i節點的定義:i節點實際上是一個資料結構,它存放了有關一個普通檔案、目錄或其他檔案系統對象的基本資訊
符号(軟)連結:
定義:符号連結是指向另一個檔案的一個檔案
ln指令:建立軟連接配接
例如:為wolf/dog.wolf.baby檔案建立一個dog_ wolf.boy符号連結并放在bodydog目錄中的指令:
ln –s wolf/dog.wolf.baby bodydog/dog_ wolf.boy
硬連結:
定義:一個硬連結(hard link)是一個檔案名與一個i節點之間的對應關系,也可以認為一個硬連結是在所對應的檔案上添加了一個額外的路徑名
ln指令建立硬連接配接
為wolf/wolf.dog檔案在backup目錄中建立一個名為wolf.dog2的硬連結指令:
ln wolf/wolf.dog backup/wolf.dog2
Linux系統中的檔案類型:
常見的檔案類型:
-:普通檔案(regular file),也稱為正規檔案。
d:目錄(directory)。
l:符号(軟)連結。
b:塊特殊檔案(b是block的第1個字元),一般指塊裝置,如硬碟。
c:字元特殊檔案(c是character的第1個字元),一般指字元裝置,如鍵盤。
檢查磁盤空間:
df指令:顯示檔案系統中磁盤使用和空閑區的數量
-a 顯示所有磁盤
-h 機關轉換
du指令:顯示目錄和檔案的大小
ah同上
十三、Linux網絡原理及基礎設定
ifconfig指令:顯示所有正在啟動的網卡的詳細資訊或設定系統中網卡的IP
如:修改eth0網卡的IP位址為172.18.48.56和子網路遮罩255.255.255.128的指令:
ifconfig eth0 172.18.48.56 netmask 255.255.255.128
ifup和ifdown指令:啟動和停止網卡:
ifup指令:啟動系統上指定的網卡
如:啟動eth0網卡的指令:ifup eth0
ifdown指令:停止系統上指定的網卡
停用eth0網卡的指令:ifdown eth0
網絡配置檔案:
配置檔案存放在/etc/sysconfig/network-scripts目錄,每個網卡對應的配置檔案的檔案名以ifcfg-開始
網絡配置的定義:
修改網卡所對應的網絡配置檔案,可以通過使用文字編輯器(vi)直接編輯網絡配置檔案來重新配置網絡
十四、軟體包的管理
RPM的定義:RPM就是Red Hat Package Manger(紅帽軟體包管理工具)
rpm的檔案名分為5部分:
第1部分是name,表示這個rpm軟體包的名稱;
第2部分是version,表示這個rpm軟體包的版本編号;
第3部分是release,表示這個rpm軟體包的版本釋出次數(修正号碼);
第4部分是architectures,表示這個rpm軟體包适用于哪些平台;
最後一部分是rpm,表示這個rpm軟體包的檔案擴充名。
rpm軟體安裝與移除工作中經常使用的選項:
–i:安裝(Install)軟體。
–U:更新(Upgrade)舊版本的軟體。
–e:移除/删除(Erase)軟體。
–v:顯示詳細的處理資訊。
–h:顯示安裝進度。解除安裝不能用
檢視RPM軟體包中的資訊:
rpm –qa:顯示目前作業系統上安裝的全部軟體包,其中q是query(查詢)的第1個字母,a是all(全部)的第1個字母
rpm –qf 檔案名:顯示這個檔案是由哪個軟體包安裝的,f是file(檔案)的第1個字母。
如:列出安裝/bin/tar檔案的軟體包的指令為:rpm –qf /bin/tar
rpm –qi 軟體包名:顯示這個軟體包的資訊,i是information(資訊)的第1個字母
如:列出tar-1.14-10.RHEL4這個軟體包的詳細資訊的指令:rpm –qi tar-1.14-10.RHEL4
rpm –ql 軟體包名:列出這個軟體包中所包含的全部檔案,其中l是list的第1個字母。
如:列出tar-1.14-10.RHEL4這個軟體包中所包含的全部檔案的指令:rpm –ql tar p資料包
RPM包的屬性依賴性問題:
定義:所謂的RPM軟體包的屬性依賴性問題,即這個軟體包的安裝依賴于其他軟體包的安裝
十五、yum管理RPM包
rpm 隻能安裝已經下載下傳到本地機器上的rpm 包. yum能線上下載下傳并安裝rpm包,能更新系統,且還能自動處理包與包之間的依賴問題,這個是rpm 工具所不具備的。
yum:解決RPM的依賴關系的問題,友善使用者進行軟體的安裝、更新等等工作
CD光牒挂載:
mount /dev/sr0 挂載點或者mount /dev/cdrom 挂載點
鏡像檔案的挂載:
mount -o loop -t iso9660 鏡像檔案 挂載點
-o loop:用來把一個檔案當成硬碟分區挂接上系統
yum的配置:
直接配置/etc目錄下的yum.conf檔案
在/etc/yum.repos.d目錄下增加.repo檔案
本地yum配置:
mount /dev/cdrom /mnt # 挂載CD光牒到/mnt目錄
cd /etc/yum.repos.d/
ls
rhel-source.repo
cp rhel-source.repo rhel.repo #拷貝一份配置檔案
-
編輯配置檔案如下:
vim rhel.repo
[rhel-local] #子產品名稱,須修改不能與其他.repo檔案中的重名
name=Red Hat Enterprise Linux 6 local repo # 名稱随便起
baseurl=file:///mnt #指定rpm倉庫的位置
enabled=1 #1開啟該配置,0為關閉
gpgcheck=1 #1為校對軟體
yum install vsftpd httpd # 安裝vsftpd及httpd服務
用vsftpd搭建yum源伺服器:
Vsftpd預設的配置檔案是允許匿名通路
umount /dev/cdrom #解除安裝CD光牒
mount /dev/cdrom /var/ftp/pub/ #挂載CD光牒到vsftpd的公衆目錄
service vsftpd restart # 重新開機vsftpd服務
-
必須關閉防火牆和selinux
Service iptables stop
Getenforce :檢視selinux狀态
臨時關閉:不用重新開機:setenforce 0
0 permissive允許 1 enforcing 執行
-
配置客戶機:
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls #rhel.repo是按照本地yum配置生成的
rhel.repo rhel-source.repo
[root@localhost yum.repos.d]# cat rhel.repo #修改為以下内容
[rhel-ftp]
name=Red Hat Enterprise Linux 6
baseurl=ftp://192.168.8.42/pub #指定yum源位址
enabled=1
gpgcheck=1
測試:
[root@localhost ~]# yum install bind #安裝DNS服務
yum安裝軟體:
yum –y install 軟體名
用yum删除軟體:
yum –y remove 軟體名
用yum安裝元件
yum –y groupinstall 元件名
用yum删除元件
yum –y groupremove 元件名
清除yum緩存:
yum clean all
用yum查找軟體包
yum search
十六、Samba服務
samba是一個網絡伺服器,用于Linux和Windows之間共享檔案。
samba服務的啟動、停止、重新開機
service smb start|stop|restart
samba的主配置檔案:/etc/samba/smb.conf
comment = ...... 設定共享注譯
path = 設定共享目錄的實體路徑
valid users = @組名,使用者名 設定允許哪些合法組或使用者通路
public = yes|no 設定共享資源是否能給遊客帳号通路
browseable = yes|no 設定該共享為隐藏共享
writable = yes|no
注意:
1 用戶端要對目錄是否有權限,必須samba軟體放權+系統放權
2 每個使用者的通路方式是:\服務端ip\使用者名,預設通路自己的家目錄(該使用者對該目錄有w權限,且samba對使用者的家目錄開啟了writeable=yes的權限)
3 對于共享的目錄,是所有人打開目錄進行操作的,而不是一個列印機,是以printable一定要設定no4 writeable=yes代表對所有使用者放行了寫權限,write list=user1,user2無效,因為放行的所有使用者中已然包含user1和user25 writeable=no,write list=user1,user2代表所有人都沒有寫權限,唯獨user1有
windows用戶端的通路方式:
\172.24.0.2\common
Linux用戶端的通路方式:
smbclient //172.24.0.2/common -U user02
十七、nginx服務:
源碼安裝:
# 源碼安裝:
yum install gcc-* glibc-* openssl openssl-devel pcre pcre-devel zlib zlib-devel -y # 安裝c++環境
ls
tar xvf nginx-1.10.3.tar.gz
cd nginx-1.10.3
ls
./configure
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --without-http_rewrite_module #--without-http_rewrite_module代表不使用重寫功能,即不會引用pcre庫,如果安裝過程中出現pcre相關問題,可以指定該參數
pcre: 用來作位址重寫的功能。zlib:nginx 的gzip子產品,傳輸資料打包,省流量(但消耗資源)。openssl:提供ssl加密協定。
代理:A通路B,A把自己的請求讓C代理,C去通路B
正向代理:A明确地知道自己的代理C的存在,A明确地指定自己的代理位址是C,讓C去通路B,拿到結果再給A,通常用來FQ
反向代理:使用者請求發給nginx後,由nginx負載給代理的機器,拿到結果,再由nginx傳回給用戶端(如此,nginx便把一堆自己代理的機器隐藏到後端,外界通路的就是nginx)
透明代理:使用者不知道代理的存在,使用者->交換機->路由器->代理伺服器,代理伺服器可以控制使用者的上網行為,比如限制使用者可以通路和不可以通路的網站,多用于使用者行為管理LB:http://nginx.org/en/docs/http/load_balancing.html
十八、nfs服務
定義:
NFS(網絡檔案系統)通過網絡讓不同的機器、不同的作業系統能夠彼此分享個别的資料。
NFS在檔案傳送或資訊傳送過程中依賴于RPC協定
安裝:
yum install rpcbind nfs-utils -y
配置:
配置檔案為 /etc/exports
配置檔案不存在時,用vim手動建立,再在檔案裡寫入配置
/etc/exports檔案内容格式:
<輸出目錄> [用戶端1 選項(通路權限,使用者映射,其他)] [用戶端2 選項(通路權限,使用者映射,其他)]
輸出目錄:指NFS系統中需要共享給客戶機使用的目錄
用戶端:指網絡中可以通路這個NFS輸出目錄的計算機。
**常用的指定方式:**
指定ip位址的主機:192.168.0.200
指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主機:david.bsmart.cn
指定域中的所有主機:*.bsmart.cn
選項:設定輸出目錄的通路權限、使用者映射等
通路權限選項:
- 設定輸出目錄隻讀:ro
- 設定輸出目錄讀寫:rw
使用者映射選項:
all_squash:将遠端通路的所有普通使用者及所屬組都映射為匿名使用者或使用者組(nfsnobody);
no_all_squash:與all_squash取反(預設設定);
root_squash:将root使用者及所屬組都映射為匿名使用者或使用者組(預設設定);
no_root_squash:與rootsquash取反;
anonuid=xxx:将遠端通路的所有使用者都映射為匿名使用者,并指定該使用者為本地使用者(UID=xxx);
anongid=xxx:将遠端通路的所有使用者組都映射為匿名使用者組賬戶,并指定該匿名使用者組賬戶為本地使用者組賬戶(GID=xxx);
其它選項:
secure:限制用戶端隻能從小于1024的tcp/ip端口連接配接nfs伺服器(預設設定);
insecure:允許用戶端從大于1024的tcp/ip端口連接配接伺服器;
sync:将資料同步寫入記憶體緩沖區與磁盤中,效率低,但可以保證資料的一緻性;
async:将資料先儲存在記憶體緩沖區中,必要時才寫入磁盤;
wdelay:檢查是否有相關的寫操作,如果有則将這些寫操作一起執行,這樣可以提高效率(預設設定);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs伺服器将檢查其父目錄的權限(預設設定);
no_subtree:即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的權限,這樣可以提高效率;
配置流程:
修改配置:
cat /etc/exports
/share 192.168.31.0/24(rw,sync,fsid=0)
開權限:chmod -R o+w /share
為rpcbind和nfs做開機啟動:
systemctl enable nfs-server.service
systemctl enable rpcbind.service
啟動(必須先啟動rpcbind服務):
systemctl start rpcbind.service
systemctl start nfs-server.service
确認nfs伺服器啟動成功:
rpcinfo
exportfs
/share 192.168.31.0/24
檢視資訊:
檢視自己共享的服務: showmount -e
顯示已經與用戶端連接配接上的目錄資訊:showmount -a
案例展示:
=====================用戶端
yum install rpcbind nfs-utils -y
systemctl enable rpcbind.service && systemctl start rpcbind.service
showmount -e NFS伺服器IP #檢查 NFS 伺服器端是否有目錄共享
mount -t nfs 192.168.31.106:/share /var/www/html/ # 将其它系統的共享檔案挂載到目前系統
=====================測試
基于nginx的負載均衡配置,打開後端被代理服務的access.log日志,
tail -f access.log來觀察通路,
通路LB重新整理頁面發現内容保持一緻,
但是每台被代理的機器的access.log日志都有新的内容進來
十九、計劃任務crond服務
計劃任務:到預定時間就會自動執行的任務
crond服務相關的軟體包:
rpm -qa |grep cron
cronie-anacron-1.4.11-14.el7.x86_64
crontabs-1.11-6.20121102git.el7.noarch
cronie-1.4.11-14.el7.x86_64
計劃任務分為兩類:系統級和使用者級:
系統的計劃檔案存放在/etc/crontab路徑。
使用者的計劃檔案放在/var/spool/cron/使用者名。
檢視全局計劃任務: cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs# Example of job definition:
# .---------------- 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
run-parts指令:
可執行一個目錄下所有的可執行檔案,目錄下檔案必須有執行權限。
run-parts /test
crontab -u 指令:
通過指令檢視使用者tom的計劃任務。
crontab -u tom -l
從檔案中檢視使用者tom的計劃任務
cat /var/spool/cron/tom
文法:crontab [-u <使用者名稱>][配置檔案] 或 crontab [-u <使用者名稱>][-elr]
crontab任務配置基本格式:
* * * * * command
分鐘(0-59) 小時(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天) 指令
第1清單示分鐘1~59 每分鐘用*或者 */1表示
第2清單示小時1~23(0表示0點)
第3清單示日期1~31
第4清單示月份1~12
第5列辨別号星期0~6(0表示星期天)
第6列要運作的指令
參數:
-e 編輯該使用者的計時器設定。
-l 列出該使用者的計時器設定。
-r 删除該使用者的計時器設定。
-u<使用者名稱> 指定要設定計時器的使用者名稱。
1 檢視計劃任務的執行:tail -f /var/log/cron
2 寫計劃任務時,指令必須加上絕對路徑,否則會出現這種情況:
從日志中看,确實觸發了計劃任務的執行,但是指令卻沒有執行成功,
比如* * * * *
crontab例子:
常見的時間格式可以用如@yearly的方式代替:
@reboot 代表的意思Run once, at startup.
@yearly 代表的意思Run once a year, "0 0 1 1 *".
@annually 與@yearly相同意思
@monthly 代表的意思Run once a month, "0 0 1 * *".
@weekly 代表的意思Run once a week, "0 0 * * 0".
@daily 代表的意思Run once a day, "0 0 * * *".
@midnight 與@daily的意思相同
@hourly 代表的意思Run once an hour, "0 * * * *".
系統自帶的計劃任務:
hourly、daily、weekly、mouthly #預設配置檔案為/etc/anacrontab
将需要執行的腳本放到相應的目錄下即可,目錄分别為:
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/ect/cron.mouthly
檢視cron服務是否起作用:
cat /var/log/cron #檢視定時任務是否準時調用
tail -f /var/spool/mail/使用者名 # 檢視普通使用者的計劃任務執行情況
-
注意:
cron 守護程序每分鐘都檢查 /etc/crontab 檔案、etc/cron.d/ 目錄、以及 /var/spool/cron 目錄中的改變。
如果發現了改變,它們就會被載入記憶體。這樣,當某個 crontab 檔案改變後就不必重新啟動守護程序了.
crontab的使用者手冊中推薦每一個指令使用絕對路徑,例如調用rm指令時寫作:/bin/rm,
這是為了防止由于每一個使用者的PATH環境變量不同而導緻指令無法找到的錯誤
crontab不執行的問題彙總:
腳本的原因:不能執行的機率占到 70%以上。
執行環境問題:在代碼最前面執行 source /home/user/.bash_profile。
系統時間不正确:解決方案:date -s **
腳本是否有可執行權限:必須保證執行腳本的使用者有執行改檔案的權限。
crontab 守護程序死掉:解決方案:重新開機該程序。
腳本都正确,但不執行:
crontab -u root /var/spool/cron/root
service crond restart # 重新開機服務
crond沒有啟動
腳本編碼問題:用vi編輯器建立新shell腳本,輸入内容後儲存
- tar czf /tmp/
date '+%Y'
/etc
該計劃任務中指令的執行流程是crond->tar指令,
而crond在執行tar指令時,無法識别通配符%的意思(shell能識别),
是以該指令無法正常執行
改正結果:* * * * * tar czf /tmp/
date '+\%Y'
/etc
通常都會把要執行的操作放到檔案中,然後/bin/bash a.sh去執行
-
/bin/bash a.sh
這樣的執行流程就變成了crond->bashshell->a.sh,這樣a.sh内即便是寫%号,也能被識别出來。
二十、linux系統啟動流程
打開計算機電源,從主機闆的BIOS讀取存儲的程式。
從選擇的儲存設備中讀取起始的512 bytes,512 bytes叫做主引導記錄MBR。MBR告訴電腦從某一個分區來裝載引導加載程式(boot loader)
boot loader會加載kernel,kernel充當軟體和硬體的接口,作業系統上的任何操作都要通過kernel傳達給硬體。
kernel會啟動一個init程序,交接給init來管理。