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”  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章