天天看點

linux日常管理

監控系統狀态 – 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: 從塊裝置寫入資料的量(寫磁盤);

in :  每秒的中斷次數,包含時鐘中斷;

cs :  每秒的上下文切換次數;

wa :表示I/O等待所占用cpu時間百分比.

監控系統狀态 – top

用于動态監控程序所占系統資源,每隔3秒變一次。 

RES 這一項為程序所占記憶體大小,而 %MEM 為使用記憶體百分比。在 top狀态下,按 “shift + m”, 可以按照記憶體使用大小排序。按數字 ‘1’ 可以列出各顆cpu的使用狀态。  

top -bn1 它表示非動态列印系統資源使用情況,可以用在shell腳本中 

top -c  最右側的指令可以顯示更詳細的資訊

監控系統狀态 – 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

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是被從磁盤中讀出來的 

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 多線程程序

+ 在前台的程序

pstree 樹形顯示所有程序

netstat 檢視網絡狀況 

netstat -lnp  檢視目前系統開啟的端口以及socket

netstat -an  檢視目前系統所有的連接配接

1. 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"

2. Selinux

配置檔案 /etc/selinux/config 三種形式:enforcing, permissive, disabled SELINUX=disabled   

setenforce 0/1  getenforce  yum install -y libselinux-utils 

3. 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 主要用于修改資料包的TOS(Type Of Service,服務類型)、TTL(Time ToLive,生存周期)值以及為資料包設定Mark标記,以實作Qos (Quality of Service,服務品質)調整以及政策路由等應用,由于需要相應的路由裝置支援,是以應用并不廣泛。 五個鍊:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD

raw   對封包設定一個标志,決定資料包是否被狀态跟蹤機制處理   隻有兩個鍊:OUTPUT、PREROUTING 

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 

規則備份與恢複:

service iptables save 這樣會儲存到/etc/sysconfig/iptables 

iptables-save > myipt.rule 可以把防火牆規則儲存到指定檔案中

iptables-restore < myipt.rule  這樣可以恢複指定的規則

4. 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 

任務計劃練習題:

每天淩晨1點20厘清除/var/log/slow.log這個檔案

每周日3點執行 “/bin/sh /usr/local/sbin/backup.sh”

每月14号4點10分執行 “/bin/sh /usr/local/sbin/backup_month.sh”

每隔8小時執行 “ntpdate time.windows.com”

每天的1點,12點,18點執行 “/bin/sh /usr/local/sbin/test.sh”

每天的9點到18點執行 “/bin/sh /usr/local/sbin/test2.sh”  

繼續閱讀