路由表:由多條路由記錄組成
網關:目標網絡和當前路由器(當前主機)智聯,網關IP=接口IP,不直連,網關IP=下一個路由器的臨近接口IP
目標網絡ID | netmask | 接口 | 網關 | |
192.168.1.3 | 255.255.255.0 | eth3 | 主機路由 | |
192.168.1.0 | 255.255.255.0 | eth0 | 192.168.1.254 | 網絡路由 |
192.168.0.0 | 255.255.0.0 | eth1 | 192.168.2.254 | 網絡路由 |
0.0.0.0 | 0.0.0.0 | eth2 | 192.168.3.254 | 默認路由 |
DHCP:動態主機配置協議DHCP
dhcp discover :由客戶端發送廣播,請求IP地址
dhcp offer:有dhcp服務器發送廣播,告知全網絡我選擇了誰向我提供IP地址
dhcp ack:有指定的dhcp服務器向客戶端提供信息
網絡配置
CentOs6中修改網卡名稱方法
1.vim /etc/udev/rules.d/70-persistent-net.rules
將其中對應要修改的網卡最後的NAME=改爲所需要的名稱,相匹配的網關
2.ethtool -i 網卡名 查看驅動模塊名(不必要)
3.modprobe -r e1000 卸載模塊
4.modprobe e1000 重新加載模塊
5.在/etc/sysconfig/network-scripts目錄中將原網卡的配置文件改文件名,使其格式爲ifcfg-網卡名
沒有文件就複製一個,然後改好名字
6.修改上述配置文件,將其中的DEVICE=改爲網卡名
DEVICE
ONBOOT 網絡服務啓動時是否自動啓用該網卡
MN_CONTROLLDE
BOOTPROTO=static(手動配置) 或 dhcp(自動獲取)
HWADDR 網卡地址
若沒有BOOTPROTO,需有IPADDR、NETMASK
7. service network restart (重新啓動網絡)
配置網絡接口
ifconfig (立即生效) 顯示所有已激活的網卡信息
ifconfig 網卡名 查看指定網卡信息
ifconfig -a 顯示所有網卡信息,無論是否激活
ifconfig 網卡名 up/down 激活/禁用指定網卡
路由管理命令
route 顯示default,網關解析成域名
route -n 網關爲IP地址
route add -net(一個網段)|-host(IP地址) gw 增加一個地址
route del 刪除
修改主機名
centos6及之前:
重啓後有效:vim /etc/sysconfig/network
當前有效:hostname xxxx.com
centos7:
重啓後有效:vim /etc/hostname
當前有效:hostname xxxx.com
當前和重啓均有效:hostnamectl set-hostname xxx.com
查看系統信息 hostnamectl status
修改網卡字符工具
centos6:system-config-network
centos7:nmtui
網絡配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE
DEVICE:此配置文件應用到的設備
HWADDR:對應的設備的MAC地址
BOOTPROTO:激活此設備時使用的地址配置協議,常用的dhcp, static, none, bootp
NM_CONTROLLED: NM是NetworkManager的簡寫,此網卡是否接受NM控制;建議CentOS6爲“no”
ONBOOT:在系統引導時是否激活此設備
TYPE:接口類型;常見有的Ethernet, Bridge
UUID:設備的惟一標識
IPADDR:指明IP地址
NETMASK:子網掩碼
GATEWAY: 默認網關
DNS1:第一個DNS服務器指向
DNS2:第二個DNS服務器指向
USERCTL:普通用戶是否可控制此設備
PEERDNS:如果BOOTPROTO的值爲“dhcp”,是否允許dhcp server分配的dns服務器指向信息直接覆蓋至/etc/resolv.conf文件中
bond綁定
bond:將多塊網卡綁定同一個IP地址對外提供服務,通過bonding虛擬一塊網卡,不是直接設置同一個IP地址
工作模式
bond0 按順序從屬接口
bond1 只有一個從屬接口被激活
bond3 所有的從屬接口傳送數據包(廣播效果,發一個包迴應倆個包)
bond 配置
cd /etc/sysconfig/network-scripts/(bonding設備的配置文件)
vim ifcfg-bond0
DEVICE=bond0
BONDING_OPTS="mode=1 miimon=100
(miimon 是用來進行鏈路監測的。如果miimon=100,那麼系統每100ms 監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路)
IPADDR=192.168.25.100
PREFIX=24
vim ifcfg-eth3
DEVICE=eth3
MASTER=bond0
SLAVE=yes
vim ifcfg-eth4
DEVICE=eth4
MASTER=bond0
SLAVE=yes
/etc/init.d/NetworkManager stop
/etc/init.d/network restart
cat /proc/net/bonding/bond0 查看bond0狀態
cat /sys/class/net/bond0/bonding/mode 查看bond0模式
刪除bond0
ifconfig bond0 down
rmmod bonding
CentOs7中不能補全命令,安裝bash-completion
ping
ping x.x.x.x 檢測主機是否在線
ping -c1 只ping一個包
ping -W1 錯誤後僅重試1s
ping -s 60000 一個包大小
ping -f 不顯示ping的結果
lftp
lftp -o 下載到指定目錄
put 上傳
lftpget 下載命令
wget
wget
-P 指定下載目錄,默認下載到運行程序的當前目錄
-O 指定文件名,默認與原文件名一致
- -limit-rate= XX(M,K,G) 指定傳輸速率
-c 中斷的下載可以斷點續傳,如不加-c,將重新下載
-q 靜默下載
links
--dump 只看文字
--source 看源碼
ps
ps:查看進程信息(process state) Linux系統各進程的相關信息均保持在/proc/PID目錄下,支持三種選項 UNIX BSD GNU
BSD方式
a 所有用戶在所有終端上運行的前臺進程
x 當前用戶運行的所有進程(包括前臺進程和後臺daemon)
ax 所有用戶運行的所有進程
aux 所有用戶運行的所有進程,結果中顯示用戶名
f 顯示父子進程關係
-C 用進程名進行過濾
axo配合
o 自定義輸出列
%cpu %mem pid uid gid cmd comm tty(顯示終端名,如爲?,表示daemon後臺進程) ruser(命令的發起人) euser(命令的真正執行人) state
k 排序或--sort
VSZ:虛擬內存集,線性內存 表示操作系統承諾內存集
RSS:常駐內存集 實際分配內存
UNIX方式
-e 顯示所有進程
-f 顯示完整格式
-ef 以完整格式顯示所有進程
-eF 以更完整格式顯示所有進程
-efH 顯示父子進程關係
-eo 自定義顯示結果,如下
%cpu,%mem,pid,nice,pri,stat,comm
nice值
-20~19 數字越小,優先級越高
renice -n # (-20~19) pid
nice -n #(-20~19) -# command
查看nice值方式
ps axo ni[ce]
pgrep
pgrep 按預定義的模式
-u UID/USERNAME 基於執行程序的用戶名進行搜索
-l 顯示的結果中增加進程名
-t 終端名
-P 查看子進程
pidof
進程名 查詢對應進程名的PID
uptime
顯示當前時間,系統已啓動的時間、當前上線人數,系統平均負載(1、 5、 10分鐘的平均負載,一般不會超過1)
vmstat 監控優化命令
vmstat各項含義
procs | memory | swap | io(硬盤) | system | cpu |
r(running):可運行(正運行或等待運行)的進程個數 | swpd:當前虛擬內存的已使用空間 | si:表示內存從swap讀入的總量 | bi:表示內存從硬盤讀入的總量 | in(interrupts):每秒中斷的速率 | us(user):用戶空間時間 |
b(blocked):處於不可中斷睡眠狀態的進程個數 | free:物理內存的剩餘空間,直至不夠用時,纔會使用虛擬內存 | so:表示從內存寫出到swap的總量 | bo:表示從內存寫出到硬盤的總量 | cs(context swith):進程切換速率 | sy(system):內核空間,系統空間 |
buffer:用於buffer的內存總量 (buffer 緩衝,平衡速度) | id(ldle):空閒時間 | ||||
cache:用於cache的內存總量 (cache 快取,一段一段存,減緩速度不匹配) | wa(wait):等待時間 | ||||
st(stolen):被虛擬機偷走的時間 |
vmstat -s 詳細查看內存信息
dstat
系統資源統計 替代 vmstat iostat(統計cpu和設備io信息)
-c: 顯示cpu相關信息
-C #,#,...,total
-d: 顯示disk(磁盤讀寫狀態)相關信息
-D total,sda,sdb,...
-g:顯示page相關統計數據
-m: 顯示memory(內存狀態)相關統計數據
-n: 顯示network相關統計數據
-p: 顯示process相關統計數據
-r: 顯示io請求相關的統計數據
-s: 顯示swapped相關的統計數據
--tcp
--udp
--unix
--raw
--socket
--ipc
--top-cpu:顯示最佔用CPU的進程
--top-io: 顯示最佔用io的進程
--top-mem: 顯示最佔用內存的進程
--top-latency: 顯示延遲最大的進
pmap
進程對應的內存映射
pmap pid
pmap -x pid(內容更多)
ls -l /proc/40052/fd |wc -l
通過查看進程文件描述符的數量是否增長來判斷是否有內存泄露的問題
kill
查看信號,進程號
-0 無作爲,可以用來單純判斷進程是否運行.
-1 強制進程重讀配置文件
-2 中止正在運行的進程;相當於Ctrl+c
-3 相當於ctrl+\
-9 強制殺死正在運行的進程
-15 終止正在運行的進程 (默認)\
killall 按進程名稱查看
pidof 查詢進程號
pstree 樹狀形展示進程
pkill
是根據名稱或其他屬性來查詢進程或給進程發信號的
-u 用戶名 殺死指定用戶所運行的所有進程
pkill -t pts/1 殺死指定終端上運行的所有進程
進程的前後臺 之前在講腳本的文章裏提到過
ctrl+z 將運行在前臺的進程暫停 或 kill -19 PID
bg 將在當前終端上暫停的進程,放入後臺繼續運行 或kill -18 PID
fg 將在當前終端上暫停的或在當前終端上後臺運行的進行,放入前臺繼續運行
使進程不再依附於終端在後臺運行
nohup command &> /dev/null
screen; command (可以切回前臺)
(command&)
jobs 查看當前終端所有作業
並行運行多條命令
三種方法
1. vim all.sh 只能是腳本
sh1&
sh2&
shn&
2.(sh1&);(sh2&) 這倆個可以腳本也可以是命令
3.{sh1&sh2&sh3}
計劃任務
at 選項 時間
at -l = atq 列出等待進行的任務
at -c 查看指定序號任務的詳細信息
at -v 顯示版本號
at -d = atrm 刪除
at 時間 -f 文件 寫入文件
at -m 無輸出的命令也給root發郵件 看命令執行
有輸出的命令自動發郵件
配置at的方式
1. at 指定的時間
需要做的任務內容
ctrl + d 退出保存
2. 使用管道方式定製
echo |at 時間
3. at << EOF
輸入所需要完成的任務內容
>>EOF
at 時間 指定任務進行時間
at 10:00 2018-04-01
依賴於atd服務 需開啓
systemctl start atd
/etc/at.deny 限制at配置計劃任務
當僅/etc/at.deny 存在時(默認)寫入deny的用戶不能配置
當/etc/at.allow存在時/etc/at.deny失效,只有寫在allow中的用戶才能配置at
當/etc/at.allow及/etc/at.deny都不存在時,僅有root才能配置at
crontab 週期性的計劃任務(系統級)
/etc/crontab 文件制定,多項以逗號間隔
crontab 命令
-l 列出等待進行的任務
-e 編輯
-r 刪除任務的有關文件所有
-i -r, 刪除時詢問
-u 編輯用戶