一、運維概述
一、什麼是運維
服務器的運行維護
二、名詞
一、IDC(互聯網數據中心)
服務器租用、機櫃租用
二、監控軟件
zabbix、nagios、cactti
三、經常使用Linux操做系統
一、CentOS
二、RedHat
三、Ubuntu
四、虛擬化
五、Web正向代理(客戶端知道本身使用的代理IP)
一、用途
一、訪問原來沒法訪問的資源(google)
二、對Web服務器隱藏用戶信息
六、nginx反向代理(客戶端沒有感受)
一、流程
客戶端 -> 反向代理服務器 -> 把請求轉發給內部網絡的服務器
二、做用
一、保證內網安全,可使用方向代理提供WAF功能,阻止WEB攻擊
二、負載均衡,優化網站的負載
七、負載均衡規則(nginx反向代理)
一、輪詢 :逐一循環調度
二、權重(weight) :指定輪詢概率,權重值和訪問比例成正比
三、ip_hash :根據客戶端IP分配固定的後端服務器
八、負載均衡實現(修改nginx配置文件)
upstream servers{#定義集羣
server 10.10.10.11;
server 10.10.10.12 weight=2;
server 10.10.10.13;
server 10.10.10.14 backup;
}
server{
listen 80;
... ...
}
二、Linux經常使用命令
一、ifconfig : 查看IP地址和MAC地址
## windows中爲ipconfig
二、ping :測試網絡連通性
ping IP地址/域名 -c 2
三、nslookup :解析域名對應的IP地址
nslookup www.baidu.com
四、top :Linux下的任務管理器,動態顯示當前全部進程CPU以及內存的使用率,q退出
五、ps -aux : 顯示系統進程(PID號)
ps -aux | grep "mysql"
六、kill :殺死1個進程
sudo kill PID號
七、df -h : 查看磁盤使用狀況
八、ls -lh : l表示長格式,h提供易讀單位
ls -lh 文件名
九、chmod :修改文件權限
chmod +x 文件名
chmod 644 文件名
rw-r--r--
r : 4
w : 2
x : 1
十、wc -l :統計文件的行數
wc -l /etc/passwd :統計Linux系統有多少個用戶
十一、sort :對文件中的內容進行排序
sort ip.txt
十二、uniq -c
一、做用 :去除重複行,並統計每行出現的次數(相鄰行)
二、用法 :sort 文件名 | uniq -c
1三、find命令 :根據指定條件查找文件/目錄
一、-name :文件名查找
-iname :不區分大小寫
find 路徑 -name "文件名"
一、查找 ~/spider目錄中的全部的 py 文件
find ~/spider -name ".py"
二、-type :根據類型查找(文件 | 目錄)
一、經常使用選項
-f :文件
-d :目錄
-l :連接(link快捷方式)
二、查找主目錄下以mysql開頭的文件
find ~ -name "mysql" -type f
三、-size :按大小查找
一、+ :大於...的文件/目錄
二、- :小於...的文件/目錄
三、查找/home/treana/software大於20M的文件
find ~/sofware -size +20M -type f
四、-ctime :根據時間查找
一、-ctime +1 :1天之前的文件/目錄
二、-cmin -5 :5分鐘之內的文件/目錄
三、查找~/spider下1天之內的文件
find ~/spider -ctime -1 -type f
五、處理動做
find .... -exec Linux命令 {} ;
一、查找1天之內的以.doc結尾的文件,而後刪除
find . -name "*.doc" -ctime -1 -type f -exec rm -rf {} ;
1四、ssh :遠程鏈接到服務器
一、格式 :ssh 用戶名@IP地址
二、示例 :ssh tarena@X.X.X.X
1五、scp
一、遠程複製文件/目錄
二、scp 文件名 用戶名@IP地址:絕對路徑
scp A.tar.gz tarena@X.X.X.X:/home/tarena
1六、du -sh :顯示當前目錄大小
du -sh 目錄名
三、運維工具
一、xshell(軟件,安裝在windows)
安全終端模擬軟件
二、xshell使用方法
文件 - 新建 - 輸入服務器IP地址 - 用戶名 - 密碼 - 確認鏈接
三、Windows <--> Linux
一、安裝lszrz
sudo apt-get install lrzsz
二、Windows文件 -> Linux
xshell終端 :$ rz
三、Linux文件 -> Windows
xshell終端 :$ sz 文件名mysql
一、shell編程
一、解釋執行器
一、sh
二、bash
## /etc/passwd查看用戶默認bash, sh解釋執行器沒有高亮顯示,也沒有自動補全
二、shell編程
一、全部的shell程序都是以 .sh 結尾
二、執行方式
一、bash test.sh
二、chmod +x test.sh
./test.sh
## 保證文件中第1行爲 :#!/bin/bash
三、shell基礎
一、變量賦值
一、變量名=值 : =兩側不能有空格
number=10 name="張三丰"
二、獲取Linux命令的執行結果給變量賦值
一、time=$(date)
二、time=date
三、接收用戶從終端輸入給變量賦值
read -p "提示信息" 變量名
read -p "輸入姓名:" name
三、輸出語句
echo $變量名
四、'' 和 "" 的區別
一、'' 沒法獲取變量的值
二、"" 能夠獲取變量的值
read -p "Input Name:" name
echo '名字是:$name' 結果:名字是:$name
echo "名字是:$name" 結果:名字是:張三丰
五、運算符
一、算術運算符
+ - * / %
++ :自加1運算
--
運算命令(let):
一、let運算表達式
i=1
let i++
echo $i
二、expr運算表達式
i=1
sum=expr $i + 5
echo $sum
二、比較運算符
一、文件狀態
-e : 文件/目錄是否存在
-d : 判斷是否爲目錄
-f : 判斷是否爲文件
二、字符比較
= !=
空 :-z
非空 :!-z 或者 -n
三、數值比較
等於 :-eq
大於 :-gt
>= :-ge
小於 :-lt
<= :-le
不等於:-ne
四、邏輯比較
邏輯與 :&&
邏輯或 :||
六、if條件判斷
一、語法格式
if [ 條件 ];then
執行語句
elif [ ];then
執行語句
else
執行語句
fi
二、輸入2個數字,比較大小
七、for循環1
一、語法格式
for 變量名 in 值列表
do
執行語句
done
二、造數方法 : seq 起始值 步長 終止值
seq 5 : 1 2 3 4 5
seq 1 2 10 : 1 3 5 7 9
seq 2 2 10 : 2 4 6 8 10
三、用for循環輸出1 2 3 4 5
八、C-for循環
一、語法格式
for ((賦初值;條件判斷;步長))
do
執行語句
done
二、C-for循環輸出1 2 3 4 5
九、while循環
一、語法格式
while [ 條件 ]
do
執行語句
done
二、輸出1-10之間的整數
十、函數
一、語法格式
函數名(){
代碼塊
}
# 函數調用
函數名
二、在用戶主目錄建立一個文件夾,若是不存在就建立,若是存在提示用戶一下
二、每隔5分鐘檢查根分區使用量,低於20G時發出警告
#!/bin/bash
while [ 1 -eq 1 ]
do
h=df -h | grep "/$" | awk '{print $4}' | awk -F "G" '{print $1}'
ios
if [ $h -lt 20 ];then echo "根分區將滿,請輸出沒必要要的文件" fi sleep 300
done
三、計劃任務+備份腳本(天天18:00作數據備份)
#!/bin/bash
day=$(date +%F)
dir=/home/tarena/mydir
mysqldump -hlocalhost -uroot -p123456 db5 > $dir/db5-$(date +%F).sql &> /dev/null
echo "數據庫備份成功"nginx
計劃任務操做:
crontab -e
0 18 * * * bash /home/tarena/sh/backup.shsql
一、shell編程
一、解釋執行器
一、sh
二、bash
## /etc/passwd查看用戶默認bash, sh解釋執行器沒有高亮顯示,也沒有自動補全
二、shell編程
一、全部的shell程序都是以 .sh 結尾
二、執行方式
一、bash test.sh
二、chmod +x test.sh
./test.sh
## 保證文件中第1行爲 :#!/bin/bash
三、shell基礎
一、變量賦值
一、變量名=值 : =兩側不能有空格
number=10 name="張三丰"
二、獲取Linux命令的執行結果給變量賦值
一、time=$(date)
二、time=date
三、接收用戶從終端輸入給變量賦值
read -p "提示信息" 變量名
read -p "輸入姓名:" name
三、輸出語句
echo $變量名
四、'' 和 "" 的區別
一、'' 沒法獲取變量的值
二、"" 能夠獲取變量的值
read -p "Input Name:" name
echo '名字是:$name' 結果:名字是:$name
echo "名字是:$name" 結果:名字是:張三丰
五、運算符
一、算術運算符
+ - * / %
++ :自加1運算
--
運算命令(let):
一、let運算表達式
i=1
let i++
echo $i
二、expr運算表達式
i=1
sum=expr $i + 5
echo $sum
二、比較運算符
一、文件狀態
-e : 文件/目錄是否存在
-d : 判斷是否爲目錄
-f : 判斷是否爲文件
二、字符比較
= !=
空 :-z
非空 :!-z 或者 -n
三、數值比較
等於 :-eq
大於 :-gt
>= :-ge
小於 :-lt
<= :-le
不等於:-ne
四、邏輯比較
邏輯與 :&&
邏輯或 :||
六、if條件判斷
一、語法格式
if [ 條件 ];then
執行語句
elif [ ];then
執行語句
else
執行語句
fi
二、輸入2個數字,比較大小
七、for循環1
一、語法格式
for 變量名 in 值列表
do
執行語句
done
二、造數方法 : seq 起始值 步長 終止值
seq 5 : 1 2 3 4 5
seq 1 2 10 : 1 3 5 7 9
seq 2 2 10 : 2 4 6 8 10
三、用for循環輸出1 2 3 4 5
八、C-for循環
一、語法格式
for ((賦初值;條件判斷;步長))
do
執行語句
done
二、C-for循環輸出1 2 3 4 5
九、while循環
一、語法格式
while [ 條件 ]
do
執行語句
done
二、輸出1-10之間的整數
十、函數
一、語法格式
函數名(){
代碼塊
}
# 函數調用
函數名
二、在用戶主目錄建立一個文件夾,若是不存在就建立,若是存在提示用戶一下
二、每隔5分鐘檢查根分區使用量,低於20G時發出警告
#!/bin/bash
while [ 1 -eq 1 ]
do
h=df -h | grep "/$" | awk '{print $4}' | awk -F "G" '{print $1}'
shell
if [ $h -lt 20 ];then echo "根分區將滿,請輸出沒必要要的文件" fi sleep 300
done
三、計劃任務+備份腳本(天天18:00作數據備份)
#!/bin/bash
day=$(date +%F)
dir=/home/tarena/mydir
mysqldump -hlocalhost -uroot -p123456 db5 > $dir/db5-$(date +%F).sql &> /dev/null
echo "數據庫備份成功"數據庫
計劃任務操做:
crontab -e
0 18 * * * bash /home/tarena/sh/backup.sh編程