文章簡單的介紹一些簡單我們日常使用的一些命令,平時遇到問題時能夠快速查找問題,提供一定的思路解決問題,
netstat
這個命令用來查看當前建立的網路連接(深刻理解netstat每一項代表的含義),最經典的案例就是查看本地系統打開了哪些埠:
# sudo netstat -lnpt
[sudo] password for fgp:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2183/mysqld
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2506/memcached
tcp 0 0 0.0.0.0:9292 0.0.0.0:* LISTEN 1345/python
tcp 0 0 0.0.0.0:6800 0.0.0.0:* LISTEN 2185/ceph-osd
tcp 0 0 0.0.0.0:6801 0.0.0.0:* LISTEN 2185/ceph-osd
tcp 0 0 0.0.0.0:28017 0.0.0.0:* LISTEN 1339/mongod
tcp 0 0 0.0.0.0:6802 0.0.0.0:* LISTEN 2185/ceph-osd
tcp 0 0 0.0.0.0:6803 0.0.0.0:* LISTEN 2185/ceph-osd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1290/sshd
netstat能夠查看所有的網路連接,包括unix socket連接,其功能非常強大,
另外使用netstat還可以查看本地路由表:
# sudo netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 brqcb225471-1f
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 brqcb225471-1f
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
以上Genmask為0.0.0.0的表示默認路由,即連接外網的路由,網路中0.0.0.0的IP地址表示整個網路,即網路中的所有主機,它的作用是幫助路由器發送路由表中無法查詢的包,如果設定了全零網路的路由,路由表中無法查詢的包都將送到全零網路的路由中去,
ifconfig
查看網卡ip地址:
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:A2:6E:53
inet addr:172.16.100.100 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fea2:6e53/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:37795 errors:0 dropped:0 overruns:0 frame:0
TX packets:55779 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2912696 (2.7 MiB) TX bytes:5708099 (5.4 MiB)
為網卡eth0增加一個新的地址(虛擬網卡):
# sudo ifconfig eth0:0 10.103.240.2/24
# ifconfig eth0:0
eth0:0 Link encap:Ethernet HWaddr 08:00:27:c9:b4:f2
inet addr:10.103.240.2 Bcast:10.103.240.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
關閉網卡以及開啟網卡:
sudo ifconfig eth0 down
sudo ifconfig eth0 up
route
route命令用于查看和修改路由表:
查看路由表:sudo route -n
增加/洗掉路由分別為add/del子命令,比如洗掉默認路由:sudo route del defau
增加默認路由,網關為192.168.1.1,網卡為brqcb225471-1f:sudo route add default gw 192.168.1.1 dev brqcb225471-1f
查看網卡eth1配置:
# sudo ip link ls eth1
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a2:6e:53 brd ff:ff:ff:ff:ff:ff
inet 172.16.100.100/16 brd 172.16.255.255 scope global eth0
inet6 fe80::20c:29ff:fea2:6e53/64 scope link
valid_lft forever preferred_lft forever
traceroute
ping命令用于探測兩個主機間連通性以及回應速度,而traceroute會統計到目標主機的每一跳的網路狀態(print the route packets trace to network host),這個命令常常用于判斷網路故障,比如本地不通,可使用該命令探測出是哪個路由出問題了,如果網路很卡,該命令可判斷哪里是瓶頸:
# sudo traceroute -I -n int32bit.me
traceroute to int32bit.me (192.30.252.154), 30 hops max, 60 byte packets
1 192.168.1.1 4.610 ms 5.623 ms 5.515 ms
2 117.100.96.1 5.449 ms 5.395 ms 5.356 ms
3 124.205.97.48 5.362 ms 5.346 ms 5.331 ms
4 218.241.165.5 5.322 ms 5.310 ms 5.299 ms
5 218.241.165.9 5.187 ms 5.138 ms 7.386 ms
...
可以看到,從主機到int32bit.me共經過30跳,并統計了每一跳間的回應時間,另外可以參考tracepath,
ss
ss命令也是一個查看網路連接的工具(another utility to investigate sockets),用來顯示處于活動狀態的套接字資訊,關于ss的描述,參考Linux命令大全-ss命令,
ss命令可以用來獲取socket統計資訊,它可以顯示和netstat類似的內容,但ss的優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的資訊,而且比netstat更快速更高效,當服務器的socket連接數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢,可能你不會有切身的感受,但請相信我,當服務器維持的連接達到上萬個的時候,使用netstat等于浪費 生命,而用ss才是節省時間,天下武功唯快不破,ss快的秘訣在于,它利用到了TCP協議堆疊中tcp_diag,tcp_diag是一個用于分析統計的模塊,可以獲得Linux 內核中第一手的資訊,這就確保了ss的快捷高效,當然,如果你的系統中沒有tcp_diag,ss也可以正常運行,只是效率會變得稍慢,
其中比較常用的引數包括:
-l 查看處于LISTEN狀態的連接
-t 查看tcp連接
-4 查看ipv4連接
-n 不進行域名決議
因此我們可以通過ss命令查看本地監聽的所有埠(和netstat命令功能類似):
#ss -t -l -n -4
wget
wget是一個強大的非互動網路下載工具(The non-interactive network downloader),雖然curl也支持檔案下載,不過wget更強大,比如支持斷點下載等,
最簡單的用法直接加上檔案URL即可:wget http://xxx/xxx/video.mp4
使用-r引數為遞回的下載網頁,默認遞回深度為5,相當于爬蟲,用戶可以通過-l指定遞回深度,注意wget默認沒有開啟斷點下載功能,需要手動傳入-c引數,
如果需要批量下載,可以把所有的URL寫入檔案download.txt,然后通過-i指定下載檔案串列:wget -i download.txt
如果用戶不指定保存檔案名,wget默認會以最后一個符合/的后面的字符作為保存檔案名,有時不是我們所期望的,此時需要-O指定保存的檔案名,通過--limit-rate可以限制下載的最大速度,使用-b可以實作后臺下載,
另外wget甚至可以鏡像整個網站:wget --mirror -p --convert-links -P int32bit http://int32bit.me
wget還支持指定下載檔案的格式,比如只下載jpg圖片:wget -A.jpg -r -l 2 http://int32bit.me/
axel
axel是一個多執行緒下載工具(A light download accelerator for Linux),通過建立多連接,能夠大幅度提高下載速度,所以我經常使用這個命令開掛下載大檔案,比wget快多了,并且默認就支持斷點下載:
開啟20個執行緒下載檔案:axel -n 20 URL
這個強大的下載工具極力推薦,非常好用!
ipset
以上我們通過iptables封IP,如果IP地址非常多,我們就需要加入很多的規則,這些規則需要一一判斷,性能會下降(線性的),ipset能夠把多個主機放入一個集合,iptables能夠針對這個集合設定規則,既方便操作,又提高了執行效率,注意ipset并不是只能把ip放入集合,還能把網路地址、mac地址、埠等也放入到集合中,
首先我們創建一個ipset:
# sudo ipset create blacklist hash:ip
以上創建了一個blacklist集合,集合名稱后面為存盤型別,除了hash表,還支持bitmap、link等,后面是存盤型別,我們指定的是ip,表示我們的集合元素為ip地址,
我們為這個blacklist集合增加一條規則,禁止訪問:
# sudo iptables -I INPUT -m set --match-set blacklist src -j DROP
此時只要在blacklist的ip地址就會自動加入黑名單,
我們把192.168.56.1和192.168.56.3加入黑名單中:
# sudo ipset add blacklist 192.168.56.3
# sudo ipset add blacklist 192.168.56.1
此時ssh連接中斷,使用vnc連接查看:
# /github/int32bit.github.io$ sudo ipset list blacklist
Name: blacklist
Type: hash:ip
Revision: 2
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 176
References: 1
Members:
192.168.56.1
192.168.56.3
把192.168.56.1移除黑名單:
# sudo ipset del blacklist 192.168.56.1
我們上面的例子指定的型別為ip,除了ip,還可以是網路段,埠號(支持指定TCP/UDP協議),mac地址,網路介面名稱,或者上述各種型別的組合,比如指定 hash:ip,port就是 IP地址和埠號共同作為hash的鍵,指定型別為net既可以放入ip地址,也可以放入網路地址,
另外ipset還支持timeout引數,可以指定時間,單位為秒,超過這個時間,ipset會自動從集合中移除這個元素,比如封192.168.56.11分鐘時間不允許訪問
# sudo ipset create blacklist hash:net timeout 300
# sudo ipset add blacklist 192.168.56.1 timeout 60
以上首先創建了支持timeout的集合,這個集合默認超時時間為300s,接著把192.168.56.1加入到集合中并設定時間為60s,
注意:執行ipset add時指定timeout必須保證創建的集合支持timeout引數,即設定默認的timeout時間.如果不想為集合設定默認timeout時間,而又想支持timeout,可以設定timeout為0,相當于默認不會超時,
linux常用一些命令:
-
網路配置相關:ifconfig、ip
-
路由相關:route、netstat、ip
-
查看埠工具:netstat、lsof、ss、nc、telnet
-
下載工具:curl、wget、axel
-
防火墻:iptables、ipset
-
流量相關:iftop、nethogs
-
連通性及回應速度:ping、traceroute、mtr、tracepath
-
域名相關:nslookup、dig、whois
-
web服務器:python、nginx
-
抓包相關:tcpdump
-
網橋相關:ip、brctl、ifconfig、ovs
資源均來源于網路,僅供學習交流使用,著作權歸原作者所有,請在下載后24小時內自覺洗掉,請勿用于商業用途,若想體驗更多,請支持正版,文章轉載請注明出處,內容若侵犯了您的權益,請聯系洗掉[email protected]作者:{指尖的記憶},轉載請注明原文鏈接:{https://www.cnblogs.com/zjdjy/}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/399489.html
標籤:其他
上一篇:NSButton動態包裝標題
下一篇:布隆過濾器
