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



2016年10月6日 上午11:56 沙發
月黑風高夜,訪問博客時!