內(nèi)核的功用:內(nèi)核管理、文件系統(tǒng)、網(wǎng)絡(luò)功能、內(nèi)存管理、內(nèi)存管理、驅(qū)動程序、安全功能
Process:運(yùn)行中的程序的一個(gè)副本:
存在生命周期
linux內(nèi)核存儲進(jìn)程信息的固定格式:task stract
多個(gè)任務(wù)的task struct組件的鏈表:task list
進(jìn)程創(chuàng)建:
init
父子關(guān)系
進(jìn)程:都由起父進(jìn)程創(chuàng)建
fork(), clone()
進(jìn)程優(yōu)先級:
0-139:
1-99實(shí)時(shí)優(yōu)先級
100-139:靜態(tài)優(yōu)先級
數(shù)字越小,優(yōu)先級越高:獲得更多的cpu運(yùn)行時(shí)間,更優(yōu)先獲得運(yùn)行的機(jī)會
Nice值:優(yōu)雅的,友好的
-20,19(100-139)
普通用戶只能提供自己進(jìn)程的nice值
Big O
O(1),O(logn), O(n) ,O(n^2) , O(2^n)
進(jìn)程內(nèi)存:
Page Frame :頁框,用存儲頁面數(shù)據(jù)
存儲page
MMU:memory Management Unit
IPC: Inter Process COmmunication
同一主機(jī)上:
signal
shm: shared memory
semerphor
不同主機(jī)上:
rpc: remote procecure call
socket:
Linux內(nèi)核:搶占式多任務(wù)
進(jìn)程類型:
守護(hù)進(jìn)程:daemon,在系統(tǒng)引導(dǎo)過程中啟動的進(jìn)程
前臺進(jìn)程:根終端相關(guān),通過終端啟動的進(jìn)程
注意:也可把在天天啟動的進(jìn)程送往后臺,以守護(hù)模式運(yùn)行
進(jìn)程狀態(tài):
運(yùn)行態(tài):running
就緒態(tài):ready
睡眠態(tài):sleep
可中斷:interrunptable
不可中斷:uninterruptable
停止態(tài):stopped
暫停于內(nèi)存中,但不會被調(diào)度,除非手動啟動之:
僵死態(tài):zombie
進(jìn)程的分類:
CPU-Bound
IO-Bound
Linux系統(tǒng)上的進(jìn)程查看及管理工具:pstree ps pidof pgrep top htop glances pman vmastat dstat kill pkill job bg fg nohup nice renice killall
Centos 5: sysV init
Centos 6: upstart
Centos 7: systemd
pstree命令:
pstree - display a tree of processes
ps命令:Process State
/proc/:內(nèi)核中的狀態(tài)信息;
內(nèi)核參數(shù):可設(shè)置其值從而調(diào)整內(nèi)核運(yùn)行特性參數(shù);
狀態(tài)變量:其用于輸出內(nèi)核中統(tǒng)計(jì)信息或狀態(tài)信息,僅用于查看
參數(shù):模擬成文件系統(tǒng)類型:
進(jìn)程:
/proc/#:
#:pid
ps - report a snapshot of the current processes.
ps [options]
選項(xiàng)有三種風(fēng)格:
1 UNIX options, which may be grouped and must be preceded by a dash.
2 BSD options, which may be grouped and must not be used with a dash.
3 GNU long options, which are preceded by two dashes.
啟動進(jìn)程的方式:
系統(tǒng)啟動過程中自動啟動,與終端無關(guān)的進(jìn)程。
用戶通過終端啟動:與終端相關(guān)的進(jìn)程。
選項(xiàng):
a:所有與終端相關(guān)進(jìn)程;
x:所有與終端無關(guān)的進(jìn)程;
u:以用戶為中心組織進(jìn)程狀態(tài)信息顯示
常用組合之一:aux
VSZ:虛擬內(nèi)存集
RSS:Resldent Size,常駐內(nèi)存集
STAT:
R:running 運(yùn)行或就緒
S:interruptable sleeping 可中斷的睡眠
D:uninterruptable sleeping 不可中斷的睡眠
T:stopped 停止
Z:zomble 僵死
+:前臺進(jìn)程
l:多線程進(jìn)程
N:低優(yōu)先級進(jìn)程
<:高優(yōu)先級進(jìn)程
s:sesslon leader 會話進(jìn)程首進(jìn)程
-e:顯示所有進(jìn)程
-f:顯示完整格式的進(jìn)程信息
常用組合之二:-ef
-F:顯示完整格式的進(jìn)程信息
C:cpu utilization cpu占用cpu%
PSR:運(yùn)行于哪顆cpu之上
-H:以層級結(jié)構(gòu)顯示進(jìn)程的相關(guān)信息
-l:
常用組合之三:-eFH
常用組合之四:
o field1,field2,....自定義要顯示的字段列表,以逗號分開
常用的field: pid ,ni ,pri ,psr ,pcpu, stat ,comm, tty ,ppid
ni: nice值
pri: priority,優(yōu)先級
rtprio: real time priority,實(shí)時(shí)優(yōu)先級
-eo
axo
pgrep, pkill命令:
- look up or signal processes based on name and other attributes
pgrep[options] pattern
-u uid: effective user
-U uid: read user
-t :TERMINAL: 與指定的終端相關(guān)的進(jìn)程
-l :顯示進(jìn)程名稱
-a :顯示完整格式的進(jìn)程名
-P pid: 顯示此進(jìn)程的子進(jìn)程
pidof命令:
根據(jù)進(jìn)程名,取其pid
top命令:
- display Linux tasks
排序:
P:以占據(jù)cpu百分比排序
M:以占據(jù)內(nèi)存百分比排序
T:累積占用cpu時(shí)間排序
首部信息:
uptime信息:l命令
tasks及cpu信息:t命令
內(nèi)存信息:m命令
退出命令:q
修改刷新時(shí)間間隔:s
終止指定的進(jìn)程:k
選項(xiàng):
-d #:指定刷新時(shí)間間隔,默認(rèn)3秒
-b: 以批次方式顯示
-n #:顯示多少批次
uptime命令:顯示系統(tǒng)時(shí)間,運(yùn)行時(shí)長,平均負(fù)載
過去1分鐘,5分鐘和15分鐘的平均負(fù)載
等待運(yùn)行的進(jìn)程隊(duì)列長度;
htop命令:
選項(xiàng):
-d #:指定延遲時(shí)間
-u UserName:僅顯示指定用戶的進(jìn)程
-s COLUME: 以指定字段進(jìn)行排序
子命令:
l: 顯示選定的進(jìn)程打開的文件列表
s: 跟蹤選定的進(jìn)程的系統(tǒng)調(diào)用
t: 以層級關(guān)系顯示各進(jìn)程狀態(tài)
a: 將選定的進(jìn)程綁定至某個(gè)cpu核心
vmast命令:
- Report virtual memory statistics
vmstat [options] [delay [ count]]
procs:
r: 等待運(yùn)行進(jìn)程的個(gè)數(shù);cpu上等待運(yùn)行的任務(wù)的隊(duì)列長度;
b: 處于不可中斷睡眠態(tài)的進(jìn)程個(gè)數(shù);被阻塞的任務(wù)隊(duì)列長度;
memory:
swpd:交換內(nèi)存使用總量;
free: 空閑的物理內(nèi)存總量;
buffer:用于緩沖的內(nèi)存總量
cache:用于緩存的內(nèi)存總量
swap:
si:數(shù)據(jù)進(jìn)入swap中的數(shù)據(jù)速率(kb/s)
so:數(shù)據(jù)離開swap的速率(kb/s)
io:
bi:從塊設(shè)備讀入數(shù)據(jù)到系統(tǒng)的速度(kb/s)
bo:保存數(shù)據(jù)至塊設(shè)備的速度()
system:
in:interrupts,中斷速率
cs:context switch ,上下文 切換的速率
cpu:
us :用戶進(jìn)程消耗的CPU時(shí)間百分比
sy :內(nèi)核進(jìn)程消耗CPU時(shí)間百分比
id :CPU處在空閑狀態(tài)的時(shí)間百分比wa:IO等待所占的CPU時(shí)間百分比
st:虛擬機(jī)占用的時(shí)間百分比
選項(xiàng):
-s:顯示內(nèi)存統(tǒng)計(jì)數(shù)據(jù)
pmap命令:
- report memory map of a process(查看進(jìn)程的內(nèi)存映像信息)
pmap [options] pid [... ]
-x : extended 顯示詳細(xì)格式信息:
另一種查看方式:cat /proc/PID/maps
glances命令:
- A cross-platform curses-based monitoring tool
內(nèi)建命令:
常用選項(xiàng):
-b: 以byte為單位顯示網(wǎng)上數(shù)據(jù)速率
-d: 關(guān)閉磁盤I/O模塊
-m: 關(guān)閉mount模塊
-n: 關(guān)閉network模塊
-t #:刷新時(shí)間間隔
-1: 每個(gè)cpu的相關(guān)數(shù)據(jù)單獨(dú)顯示
-o: {HTML|csv}: 輸出格式
-f /PATH/TO/SOMEDIR: 設(shè)定輸出文件的位置
C/S模式下運(yùn)行g(shù)lancs命令:
服務(wù)模式:
glances -s -B IPaddr
ipaddr: 本機(jī)某地址,用于監(jiān)聽
客戶端模式:
glances -c IPaddr
ipaddr:是遠(yuǎn)程服務(wù)器的ip地址
dstat命令:
- versatile tool for generating system resource statistics
dstat [-afv] [options..] [delay [count]]
常用選項(xiàng):
-c, --cpu:顯示cpu相關(guān)信息;
-C #,#,...,total
-d, --disk:顯示磁盤的相關(guān)信息
-D sda,sdb,...,total
-g:顯示page相關(guān)的速率數(shù)據(jù)
-m:Memory相關(guān)統(tǒng)計(jì)數(shù)據(jù)
-n:Interface的相關(guān)統(tǒng)計(jì)數(shù)據(jù)
-p:顯示process相關(guān)統(tǒng)計(jì)數(shù)據(jù)
-r:顯示io請求的相關(guān)統(tǒng)計(jì)數(shù)據(jù)
-s:顯示swapped的相關(guān)統(tǒng)計(jì)數(shù)據(jù)
--tcp
--udp
--raw
--socket
--ipc
--top-cpu:顯示最占用cpu的進(jìn)程
--top-io: 顯示最占用io的進(jìn)程
--top-mem: 顯示最占用內(nèi)存的進(jìn)程
--top-lantency:延遲最大的進(jìn)程
kill命令:
- terminate a process
用于向進(jìn)程發(fā)送信號,以實(shí)現(xiàn)對進(jìn)程的管理;
顯示當(dāng)前系統(tǒng)可用信號:
kill -l [signal]
每個(gè)信號的標(biāo)識方法有三種
信號的數(shù)字標(biāo)識
信號的完整名稱
信號的簡寫名稱
向進(jìn)程發(fā)信號:
kill [-s signal|-p] [--] pid...
常用信號:
1)SIGHUP: 無須關(guān)閉進(jìn)程而讓其重讀配置文件;
2)SIGINT: 終止正在運(yùn)行的進(jìn)程,相當(dāng)于ctrl+c;
9)SIGKILL: 殺死運(yùn)行中的進(jìn)程;
15)SIGTERM: 終止運(yùn)行中的進(jìn)程;
18)SIGCONT:
19)SIGSTOP:
指定一個(gè)信號:
信號號碼:kill -l
信號名稱:kill -SIGKILL
信號名稱簡寫:kill -KILL
killall命令:
- kill processes by name
killall [-SIGNAL] program
Linux系統(tǒng)作業(yè)控制:
job:
前臺作業(yè)(foreground):通過終端啟動,且啟動后會一直占據(jù)終端;
后臺作業(yè)(background):可以通過終端啟動,但啟動后即轉(zhuǎn)入后臺運(yùn)行(釋放終端)
如何讓作業(yè)運(yùn)行于后臺?
(1)運(yùn)行中的作業(yè)
Ctrl+z
注意:送往后臺后,作業(yè)為轉(zhuǎn)為停止態(tài)
(2)尚未啟動的作業(yè)
#COMMAND &
注意:此類作業(yè)雖然被送往后臺,但其依然與終端相關(guān),如果希望把送往后臺的作業(yè)剝離與終端的關(guān)系;
# nohup COMMAND &
查看所有的作業(yè):
# jobs
可實(shí)現(xiàn)走也控制的常用命令
fg [[%]JOB_NUM] :把指定的作業(yè)調(diào)回前臺
bg [[%]JOB_NUM]:讓送往后臺的作業(yè)在后臺繼續(xù)運(yùn)行
kill %JOB_NUM:終止指定的作業(yè)
調(diào)整進(jìn)程優(yōu)先級:
可通過nice值調(diào)整的優(yōu)先級范圍:100-139
分別對應(yīng)于:-20,19
進(jìn)程啟動時(shí),其nice值默認(rèn)為0,其優(yōu)先級是120
nice命令:
以指定的nice值啟動并運(yùn)行命令
nice [OPTION] [COMMAND [ARGU]..]
選項(xiàng):
-n NICE
注意:僅管理員可調(diào)低nice值;
renice命令:
renice [-n] NICE PID..
查看NICE值和優(yōu)先級:
ps axo pid,ni,priority,comm
未涉及到的命令:sar,tsar,lostat,iftop ,nethog
網(wǎng)絡(luò)配置
linux:網(wǎng)絡(luò)術(shù)語內(nèi)核的功能
網(wǎng)卡命名方式:
RHEL5:/etc/modprobe.conf
alias
RHEL6:編輯/etc/udev/rules.d/70-persistent-net.rules
ifconfig [ethx]命令:
-a:顯示所有網(wǎng)卡接口的配置信息
ifconfig ethx IP/MASK [up|down]
配置的地址立即生效,但重啟網(wǎng)絡(luò)服務(wù)或主機(jī),都失效
網(wǎng)絡(luò)服務(wù):
RHEL5:/etc/init.d/network {start|stop|restart|status}
RHEL6:/etc/init.d/NetworkManager {start|stop|restart|status}
網(wǎng)關(guān):
route
add:添加
-host:
-net
-net 0.0.0.0 添加默認(rèn)路由
route add -net|-host DEST gw NEXTHOP
route add default gw NEXTHOP
del:刪除
-host
-net
route del -net 10.0.0.0/8
route del -net 0.0.0.0route del default
注意:所做出的改動重啟網(wǎng)絡(luò)服務(wù)或主機(jī)后失效
route -n:以數(shù)字方式顯示各主機(jī)或端口等相關(guān)信息
網(wǎng)絡(luò)配置文件:
/etc/sysconfig/network
網(wǎng)絡(luò)接口配置文件:
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=:關(guān)聯(lián)的設(shè)備名稱,要與文件名的后半部“INTERFACE_NAME”保持一致;
BOOTPROTO={static|none|dhcp|bootp}:引導(dǎo)協(xié)議:要使用靜態(tài)地址,使用static或none;dhcp表示使用DHCP服務(wù)器獲取地址。
IPADDR=:IP地址
NETMASK=:子網(wǎng)掩碼
GATEWAY=:設(shè)置默認(rèn)網(wǎng)關(guān)
ONBOOT=:開機(jī)時(shí)是否自動激活此網(wǎng)絡(luò)接口
HWADDR=:硬件地址,要與硬件中的地址保持一致;可省略
USERCTL={yes|no}:是否允許普通用戶控制此接口
PEERDNS={yes|no}:是否在BOOTPROTO為dhcp時(shí)接受由DHCP服務(wù)器指定的DNS地址
注意:不會立即生效,但重啟網(wǎng)絡(luò)服務(wù)或主機(jī)都會生效
路由:
/etc/sysconfig/network-scripts/route-ethx
添加格式一:
DEST VIA NEXTHOP
添加格式二:
ADDRESS0=目標(biāo)地址
NETMASK0=掩碼
GETEWAY0=下一跳地址
DNS服務(wù)器指定方法只有一種:
/etc/resolv.conf
nameserver DNS1
nameserver DNS2
指定本地解析:
/etc/host
主機(jī)ip 主機(jī)名 主機(jī)別名
配置主機(jī)名:
/etc/syconfig/network
HOSTNAME=
ip命令:
link:配置網(wǎng)絡(luò)接口屬性
show
ip -s link show
set
ip link set DEV up|down
addr:協(xié)議地址
add
ip addr add ADDRESS dev DEV
del
ip addr del ADDRESS dev DEV
show
ip addr show dev DEV to PREFIX
flush
ip addr flush dev DEV to PREFIX
route:路由
一塊網(wǎng)卡可以使用多個(gè)地址:
網(wǎng)絡(luò)設(shè)備可以別名:
eth0
ethx:x , eth0:0, eht1:1, ...
配置方法:
ifconfig ethx:x IP/NETMASK
etc/sysconfig/network-scripts/ifcfg-ethx:x
DEVICE=ethx:x
注意:非主要地址不能使用DHCP動態(tài)獲取
網(wǎng)絡(luò)客戶端工具:
ping/lftp/ftp/lftpget/wget等;
ping命令:
- send ICMP ECHO_REQUEST to network hosts
ICMP:Internet control message protocol
ping [OPTION] destination
-c #: 發(fā)送的ping包次數(shù)
-w #:ping命令超時(shí)時(shí)長
-W #:一次ping操作中,等待對方響應(yīng)的超時(shí)間長
-s #: 指明ping 包報(bào)文大小
hping命令:(package:hping3)
- send (almost) arbitrary TCP/IP packets to network hosts
--fast
--flood
--faster
-i uX :發(fā)送UDP包 -i u1000
traceroute命令:
- print the route packets trace to network host
跟蹤從源主機(jī)到目標(biāo)主機(jī)直接經(jīng)過的網(wǎng)關(guān);
ftp命令:
ftp: File Transfer Protocol
ftp服務(wù)命令行客戶端工具:
lftp命令:
lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]
get,mget
put,mput
rm,mrm
lftpget命令:
lftpget [-c] [-d] [-v] URL [URL...]
-c:繼續(xù)此前的下載
wget命令:
The non-interactive network downloader
wget [option]... [URL]...
-b:在后臺執(zhí)行下載操作
-q:靜默模式,不顯示下載進(jìn)度
-O file:下載的文件的保存位置
-c:續(xù)傳
--limit-rate=amount:以指定的速率傳輸文件



2016年10月6日 上午11:56 沙發(fā)
月黑風(fēng)高夜,訪問博客時(shí)!