Linux運維筆記-Linux系統平常管理

1. 監控系統狀態 – w, vmstat
命令w, uptime
system load averages  單位時間段內活動的進程數  
查看cpu的個數和核數
vmstat  1
vmstat 1 10
vmstat各指標含義:
r :表示運行和等待cpu時間片的進程數,若是長期大於服務器cpu的個數,則說明cpu不夠用了;
b :表示等待資源的進程數,好比等待I/O, 內存等,這列的值若是長時間大於1,則須要關注一下了
si :由交換區進入內存的數量;
so :由內存進入交換區的數量;
bi :從塊設備讀取數據的量(讀磁盤);
bo: 從塊設備寫入數據的量(寫磁盤);
wa :表示I/O等待所佔用cpu時間百分比.

2. 監控系統狀態 – top
用於動態監控進程所佔系統資源,每隔3秒變一次。 
RES 這一項爲進程所佔內存大小,而 %MEM 爲使用內存百分比。在 top狀態下,按 「shift + m」, 能夠按照內存使用大小排序。按數字 ‘1’ 能夠列出各顆cpu的使用狀態。  
top -bn1 它表示非動態打印系統資源使用狀況,能夠用在shell腳本中 

3. 監控系統狀態 – sar
沒有這個命令,使用yum install -y sysstat
網卡流量 sar -n DEV, sar -n DEV 1 10
sar -n DEV -f /var/log/sa/sa24 
查看歷史負載  sar -q
查看磁盤讀寫  sar -b

4. free查看系統內存使用狀況
free以k爲單位顯示 -m以M爲單位  -g以G爲單位 
mem(total):內存總數; mem(used):已經分配的內存; mem(free):未分配的內存; mem(buffers):系統分配但未被使用的buffers;mem(cached)系統分配但未被使用的cache
buffers/cache(used):實際使用的buffers與cache 總量,也是實際使用的內存; buffers/cache(free):未被使用的buffers與cache和未被分配的內存之和,這就是系統當前實際可用內存 
buffers是即將要被寫入磁盤的,cache是被從磁盤中讀出來的 

5. ps 查看系統進程 
ps aux / ps -elf
PID :進程的id,這個id頗有用,在linux中內核管理進程就得靠pid來識別和管理某一個程,好比我想終止某一個進程,則用 ‘kill  進程的pid’ 有時並不能殺掉,則須要加一個-9選項了 kill  -9  進程pid
STAT :表示進程的狀態,進程狀態分爲如下幾種
D 不能中斷的進程(一般爲IO)
R 正在運行中的進程
S 已經中斷的進程,系統中大部分進程都是這個狀態
T 已經中止或者暫停的進程,若是咱們正在運行一個命令,好比說 sleep 10 若是咱們按一下ctrl -z 讓他暫停,那麼咱們用ps查看就會顯示T這個狀態
X 已經死掉的進程(這個歷來不會出現)
Z 殭屍進程,殺不掉,打不死的垃圾進程,佔系統一小點資源,不過沒有關係。若是太多,就有問題了。
< 高優先級進程
N 低優先級進程
L 在內存中被鎖了內存分頁
s 主進程
l 多線程進程
+ 在前臺的進程

6. netstat 查看網絡情況 
netstat -lnp  查看當前系統開啓的端口以及socket
netstat -an  查看當前系統全部的鏈接

7. Linux抓包工具

tcpdump 系統自帶抓包工具
tcpdump -nn -i eth0 tcp and host 192.168.0.1 and port 80
tcpdump -nn -vs0 tcp and port not 22 -c 100 -w 1.cap 
wireshark 在linux下也能夠安裝 yum install -y wireshark
抓包分析http請求:tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"

8. Selinux
配置文件 /etc/selinux/config 三種形式:enforcing, permissive, disabled SELINUX=disabled   
setenforce 0/1  getenforce  yum install -y libselinux-utils 

9. netfilter --  iptables
iptables -nvL 查看規則
iptables -F 清除當前的規則
iptables -Z 計數器清零
service iptables save 保存規則 保存的規則文件爲:/etc/sysconfig/iptables 
service iptables stop  能夠暫停防火牆,可是重啓後它會讀取/etc/sysconfig/iptables 從而啓動防火牆,另外即便咱們中止防火牆,但一旦咱們添加任何一條規則,它也會開啓
iptables -t  指定表名,默認不加-t則是filter表 
filter 這個表主要用於過濾包的,是系統預設的表,內建三個鏈INPUT、OUTPUT以及FORWARD。INPUT做用於進入本機的包;OUTPUT做用於本機送出的包;FORWARD做用於那些跟本機無關的包。  
nat 主要用處是網絡地址轉換,也有三個鏈。PREROUTING 鏈的做用是在包剛剛到達防火牆時改變它的目的地址,若是須要的話。OUTPUT鏈改變本地產生的包的目的地址。POSTROUTING鏈在包就要離開防火牆以前改變其源地址。 
mangle 這個表主要是用於給數據包打標記,而後根據標記去操做哪些包。這個表幾乎不怎麼用。 

10. iptables規則相關:
查看規則 iptables -t nat -nvL
清除規則 iptables -t nat -F
增長/刪除規則  iptables -A/-D INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP 
插入規則 iptables -I INPUT -s 1.1.1.1 -j DROP/ACCEPT/REJECT 
iptables -nvL --line-numbers  查看規則帶有id號
iptables -D INPUT 1 根據規則的id號刪除對應規則
iptables -P INPUT DROP  用來設定默認規則,默認是ACCEPT ,一旦設定爲DROP後,只能使用 iptables -P ACCEPT 才能恢復成原始狀態,而不能使用-F參數 

實例:
針對filter表,預設策略INPUT鏈DROP,其餘兩個鏈ACCEPT,而後針對192.168.0.0/24開通22端口,對全部網段開放80端口,對全部網段開放21端口。 腳本以下:
#! /bin/bash 
ipt="/sbin/iptables" 
$ipt -F; $ipt -P INPUT DROP; 
$ipt -P OUTPUT ACCEPT; $ipt -P FORWARD ACCEPT; 
$ipt -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT 
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT 
icmp的包有常見的應用,本機ping通外網,外網ping不通本機 iptables -I INPUT -p icmp --icmp-type 8 -j DROP 

nat表應用:
路由器就是使用iptables的nat原理實現
假設您的機器上有兩塊網卡eth0和eth1,其中eth0的IP爲192.168.10.11,eth1的IP爲172.16.10.11 。eth0鏈接了intnet 但eth1沒有鏈接,如今有另外一臺機器(172.16.10.12)和eth1是互通的,那麼如何設置也可以讓鏈接eth1的這臺機器可以鏈接intnet? 
echo "1" > /proc/sys/net/ipv4/ip_forward 
iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -o eth0 -j MASQUERADE 

iptables規則備份與恢復:
service iptables save 這樣會保存到/etc/sysconfig/iptables 
iptables-save > myipt.rule 能夠把防火牆規則保存到指定文件中
iptables-restore < myipt.rule  這樣能夠恢復指定的規則

11. Linux系統任務計劃
/etc/crontab  cron的主配置文件,能夠定義PATH
cron格式以下:
# .----------------分鐘 (0 - 59)
# |  .------------- 小時 (0 - 23)
# |  |  .----------  日 (1 - 31)
# |  |  |  .-------  月 (1 - 12)
# |  |  |  |  .----   周 (0 - 6) (週日=0 or 7) 
# |  |  |  |  |
# * *  * *  * user-name command to be executed
cron 也是一個服務,因此須要先啓動服務才能生效:service crond start; service crond status 

12. Linux系統服務管理
工具ntsysv 相似圖形界面管理工具,若是沒有該命令使用 yum install -y ntsysv 安裝
經常使用服務:crond, iptables, network, sshd, syslog, irqbalance, sendmail, microcode_ctl 
chkconfig --list  
chkconfig --add/del servicename 
chkconfig --level [345] servicename on/off

13. Linux系統日誌
/var/log/messages核心系統日誌文件 
每週歸檔一個日誌 messages-20130901
/etc/logrotate.conf
messages由syslogd這個守護進程產生的,若是停掉這個服務則系統不會產生/var/log/messages
/var/log/wtmp  查看用戶登陸歷史 last
/var/log/btmp  lastb 查看無效登陸歷史
/var/log/maillog
/var/log/secure
dmesg 
/var/log/dmesg

14. exec與xargs 
exec 和find同時使用
查找當前目錄建立時間大於10天的文件並刪除 :find . -mtime +10 -exec rm -rf {} \;
批量更改文件名: find ./* -exec mv {} {}_bak \;
xargs 用在管道符號後面
find . -mtime +10 |xargs rm -rf
ls -d ./* |xargs -n1 -i{} mv {} {}_bak
xargs 能夠把多行變成一行  cat 1.txt|xargs

15. screen 工具介紹
screen至關於一個虛擬終端,它不會由於網絡中斷而退出,每次登陸均可以進入那個screen
使用方法:直接輸入screen命令
screen -ls  查看已經開啓的screen
Ctrl +a 再按d退出該screen會話,只是退出,並無結束。結束的話輸入Ctrl +d 或者輸入exit 
退出後還想再次登陸某個screen會話,使用sreen -r screenid 若只有一個screen 直接screen -r
screen -S aming ; 登陸的話 screen -r aming

16. 學會使用curl命令
curl是Linux系統命令行下用來簡單測試web訪問的工具,幾個經常使用的選項你要掌握
curl -xip:port www.baidu.com  # -x能夠指定ip和端口,省略寫hosts,方便實用
curl -Iv http://www.qq.com # -I 能夠把訪問的內容略掉,只顯示狀態碼,-v能夠顯示詳細過程
curl  -u user:password  http://123.com # -u能夠指定用戶名和密碼
curl  http://study.lishiming.net/index.html -O #能夠下載,還可使用 -o 自定義名字 curl -o index2.htmlhttp://study.lishiming.net/index.html

17. 幾個和網絡相關的命令
ping
telnet  www.lishiming.net  80
traceroute www.baidu.com
dig @8.8.8.8  study.lishiming.net
nc -z -w2 www.baidu.com 1-1024  # -w2 表示 2s超時  port 這裏能夠只寫一個端口,也能夠寫一個範圍。 使用nc掃描端口時,必需要加 -z 不然不顯示結果。另外,若是想把不開放的端口也顯示出來,能夠加一個 -v 

18. rsync工具使用
rsync 命令格式
rsync [OPTION]... SRC  DEST
rsync [OPTION]... SRC  [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC  DEST
rsync [OPTION]... [USER@]HOST::SRC  DEST
rsync [OPTION]... SRC  [USER@]HOST::DEST

rsync經常使用選項
-a 歸檔模式,表示以遞歸方式傳輸文件,並保持全部屬性,等同於-rlptgoD, -a選項後面能夠跟一個 --no-OPTION 這個表示關閉-rlptgoD中的某一個例如-a--no-l 等同於-rptgoD
-r 對子目錄以遞歸模式處理,主要是針對目錄來講的,若是單獨傳一個文件不須要加-r,可是傳輸的是目錄必須加-r選項
-v 打印一些信息出來,好比速率,文件數量等
-l 保留軟鏈結
-L 向對待常規文件同樣處理軟連接,若是是SRC中有軟連接文件,則加上該選項後將會把軟連接指向的目標文件拷貝到DST
-p 保持文件權限 
-o 保持文件屬主信息
-g 保持文件屬組信息
-D 保持設備文件信息
-t 保持文件時間信息
--delete 刪除那些DST中SRC沒有的文件
--exclude=PATTERN 指定排除不須要傳輸的文件,等號後面跟文件名,能夠是萬用字符模式(如*.txt)
--progress 在同步的過程當中能夠看到同步的過程狀態,好比統計要同步的文件數量、同步的文件傳輸速度等等
-u 加上這個選項後將會把DST中比SRC還新的文件排除掉,不會覆蓋
最經常使用的 -a -v --delete --exclude 

rsync選項講解
rsync -av   dir1/ dir2/    # 其中dir2/目錄能夠不存在,記得同步目錄時必定要在末尾加上/
-a 會把軟鏈接原本來本的拷貝過去,那有時候咱們想拷貝源文件怎麼辦?就時候就用到一個 -L  
rsync -avL test1/ test2/ 
-u 選項的做用是,若是目標文件比源文件新,那麼會忽略掉該文件 
touch test2/1.txt; rsync -avu test1/ test2/
rsync -av --delete test1/ test2/   #這樣會把test2/目錄比test1/目錄多出來的文件刪除掉
rsync -a --exclude=「2.txt」 test1/ test2/  #在同步的過程當中,會忽略掉2.txt這個文件
rsync -a --progress --exclude=「*.txt」 test1/ test2/  #--progress 顯示同步過程的詳細信息,--exclude後面也可使用通配符*

rsync應用實例 - ssh方式
rsync -avL test1/ www@192.168.0.101:/tmp/test2/ 
rsync -avL 192.168.0.101:/tmp/test2/ ./test3/ 
因爲須要輸入密碼因此不適合寫到腳本中,但能夠經過建立祕鑰對,讓兩臺機器產生信任關係從而不用輸入密碼
若是ssh端口不是22,那麼須要寫成這樣的形式:rsync -av "--rsh=ssh -p port」  /dir1/ 192.168.0.101:/tmp/dir2/ 

rsync應用實例 - 後臺服務方式
配置文件 /etc/rsyncd.conf ,內容以下:
#port=873        #監聽端口默認爲873,也能夠是別的端口
log file=/var/log/rsync.log  #指定日誌
pid file=/var/run/rsyncd.pid  #指定pid
#address=192.168.0.10  #能夠定義綁定的ip
以上部分爲全局配置部分,如下爲模塊內的設置
[test]    #爲模塊名,自定義
path=/root/rsync  # 指定該模塊對應在哪一個目錄下
use chroot=true #是否限定在該目錄下,默認爲true,當有軟鏈接時,須要改成fasle
max connections=4  # 指定最大能夠鏈接的客戶端數
read only=no  #是否爲只讀
list=true  #是否能夠列出模塊名
uid=root #以哪一個用戶的身份來傳輸
gid=root  #以哪一個組的身份來傳輸
auth users=test #指定驗證用戶名,能夠不設置
secrets file=/etc/rsyncd.passwd #指定密碼文件,若是設定驗證用戶,這一項必須設置
hosts allow=192.168.0.101 #設置能夠容許訪問的主機,能夠是網段
密碼文件/etc/rsyncd.passwd的內容格式爲:username:password
啓動服務的命令是:rsync --daemon 
默認去使用/etc/rsyncd.conf這個配置文件,也能夠指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf
可以使用的選項有: rsync --daemon --helphtml

 

來源:Linux系統平常管理linux

相關文章
相關標籤/搜索