網絡管理之netstat命令
netstat
-print network connections,routing tables,interface statistics,masquerade connections and multicast memberships
netstat [-t|–tcp][-u|–udp][-w|–raw][-l|–listening][-a|–all][-n|–numeric][-e|–extend][-p|–program]
-t:tcp協議相關
-u:udp協議相關
-w:raw socket相關
-l:處于監聽狀態
-a:所有狀態
-n:以數字顯示ip和端口
-e:擴展模式
-p:顯示相關進程及pid
配置linux網絡屬性:ip
ip
-show/manipulate routing,devices,policy routing and tunnels
ip [options] object {command |help}
object:{link|addr|route}
ip link
-network device configuration
set dev iface
可設置屬性:
up down:啟用或禁用設備接口
show [dev iface]:指定接口
ip addr {add|del} IFADDR dev String
[label LABEL]:添加地址時指明網卡別名
[scope {global|link|host}]:指明作用域
[broadcast ADDRESS]:指明廣播地址
ip address show
-look at protocol addresses
[dev device]
[label LABEL]
[primary and secondary]
ip route
-routing table management
ip route add target via GW dev IFACE src SOURCE_IP
target:指明該條路由記錄是指向主機IP還是一個網段
GW:指明網關地址
IFACE:指明設備接口
ss:ss命令是netstat命令的升級版,在centos7 上推薦使用ss命令來取代netstat命令
netstat是通過遍歷proc來獲取socket信息,ss使用netlink與內核tcp_diag模塊通信獲取socket信息
ss [option]…[filter]
-t:tcp協議相關
-u:udp協議相關
-w:裸套接字相關
-x:unix sock相關
-l:listen狀態的連接
-a:所有
-n:數字格式
-p:相關的程序及pid
-e:擴展的信息
-m:內存用量
-o:計時器信息
filter:=[state TCP-STATE][EXPRESSION]
LISTEN:監聽
ESTABLESHED:以建立的連接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
‘(dport= :ssh or sport= :ssh)’
網絡配置文件:
a.IP MASK GW DNS相關配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE
b.路由相關配置文件
/etc/sysconfig/network-scripts/route-IFACE
DEVICE:此配置文件應用到的設備
HWADDR:對應的設備MAC地址
BOOTPROTO:激活此設備時使用的地址配置協議,常用的dhcp,none,static,bootp
NM_CONTROLLED:NetworkManager的簡寫,此網卡是否接受NM控制
ONBOOT:是否在系統引導時是否激活此設備
TYPE:接口類型,常見的有Ethernet,Bridge
UUID:設備的唯一標識
IPADDR:指明IP地址
NETMASK:子網掩碼
GATEWAY:默認網關
DNS1:第一個DNS服務器地址
USERCTL:是否普通用戶可以空盒子此設備
PEERDNS:如果booton設置為dhcp,是否允許dhcp server分配的DNS服務器指向信息直接覆蓋至/etc/resolv.conf文件中
本地解析器
centos6 hostname
centos7 hostnamectl 實時生效
在centos6中存放主機名的文件是 /etc/sysconfig/network
在centos7中存放主機名的文件時 /etc/hostname
dns名字解析
/etc/resolv.conf
/etc/nsswitch.conf 此文件優先級高于/etc/resolv.conf
網絡配置文件:
/etc/sysconfig/network-scirpts/route-IFACE
1) target via gw
2) ADDRESS#=
NAEMASK#=
GATEWAY#=
網卡名稱:
網絡接口識別并命名相關的udev配置文件
/etc/udev/rules.d/70-persistent-net.rules
卸載網卡驅動
modprode -r e1000
裝載網卡
modprobe e1000
Centos7 網絡屬性配置
rhel6之前,網絡接口使用連續號碼命名在;eth0,eth1等,當增加或刪除網卡時,網卡會發生改變
rehl7使用基于硬件,設備拓撲和設置類型命名
1)網卡命名機制
systemd對網絡設備的命名方法
a)如果firmware或bios為主板上繼承的設備提供的索引信息可用,且可預測則根據索引進行命名,如eno1
b)如果fireware或bios為pci-e擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,如ens1
c)如果硬件接口的物理位置信息可用,則根據此信息進行命名,如enp2s0
d)如果用戶顯示啟動,也可以根據mac地址進行命名
e)以上均不可用時,則使用傳統命名機制
2)網卡設備的命名過程
a)/usr/lib/udev/rules.d/60-net.rules
b) /usr/lib/udev/rules.d/71-biosdevname.rules
c) /usr/lib/udev/rules.d/75-net-description.rules
3) 采用傳統命名方式
a)編輯/etc/default/grub配置文件
GRUB_COMLINE_LINUC=“net.ifnames=0 rhgb quiet”
或者修改/etc/grub2/grub.cfg
b) 為grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
c) 重啟系統
nmcli命令
NetworkManager command line tool網絡管理命令行工具,它是centos中推行取代ifconfig的命令你個
nmcli [option] object {command||help}
device -show and manage network interfaces
nmcli device help
connection -start,stop,and manager network connections
nmcli connection help
修改IP地址等屬性
nmcli connection modify IFACE [+|-]setting.property value
修改配置文件執行生效
systemctl restart network
nmcli connection reload
nmcli connection down eth0
nmcli connection up eht0
使用nmcli進行網絡配置
設備即網絡接口,連接時對網絡接口的配置,一個網絡接口可有多個連接配置,但同時只有一個連接配置生效
創建一個新連接static,指定靜態地址,不自動連接
nmcli connection add type Ethernet con-name static ifname eth0 autoconnection no ip4 172.16.x.10/24 gw4 172.16.x.254
網絡組Network Teaming
網絡組:是講過個網卡聚合在一起的方法,從而實現冗錯和提供吞吐量
網絡組不同于舊版的bonding計數,提供了更好的性能和擴展性
網絡組由內科驅動和teamd守護進程實現
多種方式ruuner:broadcast roundrobin activebackup loadbalance lacp
1.nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
會在/etc/sysonfig/network-scripts/下生成一個ifcfg-team0的文件
nmcli connection modify team0 ipv4.addresses 10.1.40.121/16
nmcli connection modify team0 ipv4.method manual
2.創建port接口
nmcli connection add type team-slave con-name team0-eno1 ifname eno16777736 master team0
nmcli connection add type team-slave con-name team0-eno3 ifname eno33554984 master team0
3.啟動網絡組
nmcli connection reload
4.嘗試down掉其中一個網卡看其數據包是否能正常接收
使用teamdctl team0 state可以查看到詳細的信息
Linux進程及作業管理
內核的功能:進程管理.文件系統,網絡功能,內存管理,驅動程序,安全功能
Process:運行中的程序的一個副本,是被載入內存的一個指令集合
進程ID(process ID,PID)號碼被用來標記各個進程
UID,GID和SELINUX語境決定對文件系統的存取和訪問權限
通常從執行進程的用戶來繼承
存在生命周期
Linux內核存儲進程信息的固定格式:task struct
多個任務的task struct組件的鏈表:task list
進程創建:
init 初始化進程
父子關系:
進程:都由其父進程創建
fork(),clone()
進程優先級:
0-139:系統優先級
1-99:實時優先級
100-139:靜態優先級
數字越小,優先級越高
nice值:-20,1
Big O:時間復雜度,用時和規模的關系
o(1),o(logn),o(n),o(n^2),o(2^n)
進程內存:
page frame:頁框,用于存儲頁面數據,存儲page 4K
LRU:least recently used 近期最少使用算法,釋放內存
MMU:Memory Management Unit負責轉換線性和物理地址
IPC:Inter Process Communiation
同一主機上:
Signal
Shm:shared memory
Semerphor
不同主機上
rpc:remote procecure call 遠程庫調用
socket:
linux內核:搶占式多任務
進程類型:
守護進程:daemon,在系統引導過程中啟動的進程,與終端無關
用戶進程:跟終端相關,通過終端啟動的進程
注意:也可把在前臺啟動的進程送往后臺,以守護模式運行
進程狀態
運行態:running
就緒態:ready
睡眠態:
可中斷:interruptable
不可中斷:uninterruptable
停止態:暫停于內存中,但不會被調度,除非手動啟動,stopped
僵死態:zombie
進程的分類:
CPU-Bound
IO-Bound
《linux內核設計與實現》
《深入理解linux內核》
Linux系統上的進程查看及管理工具:
pstree ps pidof pgrep htop glances pmap svmstat dstat kill pkill job bg fg nohup nice renice killadd…
Centos 5: sysV init
Centos 6: upstart
Centos 7: system
/sbin/init
pstree:
display a tree of process
/proc/:內核中的狀態信息
內核參數:
可設置其值從而調整內核運行特性的參數
狀態變量:其用于輸出內核中統計信息或狀態下信息,僅用于查看
參數:模擬成文件系統類型
進程:
/proc/:pid
ps:
present a snapshot of the current process
ps [options]:
選項有三種風格
1 unix 帶-
2 BSD 不帶-
3 GNU long options
啟動進程的方式:
系統啟動進程中自動啟動:與終端無關的進程
用戶通過終端啟動:與終端相關的進程
選項:
a:所有與終端相關的進程
x:所有與終端無關的進程
u:以用戶為中心組織進程狀態信息顯示
常用組合:aux
VSZ:虛擬內存集
RSS:Resident Size 常駐內存集
STAT:
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zomble
+:前臺進程
|:多線程進程
N:低優先級進程
<: 高優先級進程
s:session leader
-e:顯示所有進程
-f:完整格式的進程信息
常用組合之二:-ef
-F:顯示完整格式的進程信息
C:cpu utilization
PSR:運行于哪顆CPU上
-H:以層級結構顯示進程的相關信息
常用組合之三:-eFH
常用組合之四:-eo axo
o field1,field2…:自定義要顯示的字段
常用field:pid prl psr pcpu stat comm tty ppid
ni:nice值;
pri:priority優先級
rtprio:real time priority 實時優先級
pgrep pkill
look up or signal processes based on name and other attributes
pgrep [option]pattern
-u uid: effective user
-U uid:read user
-t TERMINAL:與指定的終端相關的進程
-l:顯示進程名
-a:顯示完整格式的進程名
-P pid:顯示是此進程的子進程
pidof
根據進程名,獲取其pid
top
display linux processes
排序
P 以占據cpu百分比排序
M 內存百分比
T 累計占用cpu時間排序
首部信息:
uptime信息 l命令
tasks及cpu信息 t命令
內存信息 m命令
退出命令:q
刷新時間間隔 s
終止指定的進程 k
選項:
-d# 指定刷新時間
-b 批次方式顯示
-n# 顯示多少批次
欄位信息簡介:
us:用戶信息
sy:內核空間
ni:調整nice時間
id:空閑
wa:等待IO時間
hi:硬中斷
si:軟中斷
st:虛擬機偷走時間
uptime:顯示系統時間 運行時長及平均負載
過去1分鐘 5分鐘和15分鐘
等到運行的進程隊列的長度
內存工具:
vmstat:虛擬內存信息
vmstat [options][delay[count]]
procs:
r:等待運行的進程的個數,和核心數無關
b:處于不可中斷睡眠態的進程個數(被阻塞的隊列長度)
memory:
swpd:交換內存的使用總量
free:空閑物理內存總量
buffer:用于buffer的內存總量
cache:用于cache的內存總量
swap:
si:從磁盤交換進內存的數據速率(kb/s)
so:從內存交換至磁盤的數據速率(kb/s)
io:
bo:從塊設備讀入數據到系統中的速率(kb/s)
bi:從系統中將數據保存到塊設備的速率
system:
in:interrupts,中斷速率
cs:context switch 進程切換速率
cpu:
us;運行非系統內核程序花費的時間
sy:運行系統內核所用的時間
id:time spent idle
wa:時間花費在等待io上
st:虛擬設備偷走的時間
pmap:進程的內存映射
cat /proc/PID/maps
dstat:系統資源統計
dstat [-afv][options…][delay[count]]
-c:顯示cpu相關情況
-d:顯示disk相關信息
-g:顯示page相關統計信息
-m:顯示memory相關統計數據
-n:顯示network相關統計信息
-p:顯示process相關統計信息
-r:顯示IO請求相關統計信息
-s:顯示swapped相關統計信息
kill命令:
向進程發送控制信號,以實現對進程管理
顯示當前系統可用的信號 kill -l
常用信號:man 7 signal
1)SIGHUP:無需關閉進程而讓其重新讀取配置文件
2)SIGINT:終止正在運行的進程
9)SIGKILL:殺死正在運行的進程
15)SIGTERM:終止正在運行的進程
18)SIGCONT
19)SIGSTOP
指定信號的方法:
信號的數字標識 1,2,9
信號完整名稱:SIGHUP
信號的簡寫名稱:HUP
原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/44225