一,進程的管理
1,內核的功能:
內核三部分:
/boot/vmlinuz-Version
/boot/initrd-Version
/lib/modules/Version
系統初始化
驅動程序
進程調度
內存管理
通過緩存,緩衝對系統加速
安全功能
文件系統
網絡功能
2,內核設計機制;
單內核
Linux
微內核
Windows
sloris
/proc內核的接口
3。模塊安裝
modprobe 模塊名字 安裝模塊
-r 卸載模塊
/etc/modprobe.conf
4.修改內核參數
sysctl –w kernel.hostname=www.ibuler.com 比如
/etc/sysctl.conf
/proc/sys下的
sysctl –p 讓修改的 /etc/sysctl.conf 修改生效
sysctl –a 顯示所有內核參數
5.lspci 查看pci設備
lsusb
x86info
dmidecode 查看bios信息
hal-device 所有設備
6.udev
mknod 創建設備節點
mknod name type major minor
-m MODE 權限
主設備號:標識設備類型
次設備號:標識同一種類型的不同設備
特殊設備只有元數據
/dev/null /dev/zero
/dev/random /dev/urandom 隨機數生成器
熵池:保存隨即數的存儲空間
mkinitrd
mkinitrd /root/initrd-`uname-r` `uname -r`
7,process
資源分配的單位
執行的程序的一部分副本
進程有父子關係,任何一個進程都是由父進程fork自身而來
fork 系統調用
COW:Copy On Write
多線程(thread):進程的子系統
進程狀態:1,R runing ,ready 執行,就緒
2,S sleeping
可中斷睡眠
D 不可中斷睡眠
3,Z Zombie
4,T Stop
systime,ustime 3:7
idle time 空閒時間
進程優先級:
交互式進程(動態調高優先級,較少cpu時間)
批處理進程 (調低其優先級,較多cpu時間)
實時進程
動態優先級:由內核調整(0-99)
靜態優先級:用戶指定
用戶空間的進程:(100-139)-20-19
默認:120
進程
跟終端相關的進程:終端tty退出,進程終止
跟終端無關的進程
8,ps –process stat
BSD風格
a:跟終端相關相關的進程
x:跟終端無關的進程
u:以用戶爲中心顯示
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
stat:
<:高優先級的進程
N:低優先級進程
l: 多線程進程
+:前臺進程組中的進程
s: 會話進程的領導者
COMMAND
兩側加中括號,表示這是內核線程
Sysv風格:
-e 顯示所有進程信息
-F 更詳細的信息
自定義顯示:
-o 自定義顯示類別
如:ps auo pid,rss
top 動態顯示系統狀況
M按內存排序
P根據cpu佔用排序
T根據累計佔用時間排序
l:是否顯示平均負載和啓動時間
t:是否顯示進程和cpu狀態
m:是否顯示內存相關信息
c:是否顯示完整命令行
pstree
vmstat [-n] delay [count]
表頭 延時 顯示次數
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
r:運行和等待cpu時間片的進程數
b:等待資源完成數的進程數
swpd:切換到交換分區的大小
free:當前空閒物理內存空間大小
buff:對塊設備讀寫緩衝
cache:對文件讀寫時緩存大小
si:從swap調入內存
so:由內存調入磁盤
bi:由塊設備讀進來的數據
bo:寫如塊設備的數據
in:interrupt每秒終端數 終止當前進程,去做緊急進程
cs:每秒鐘上下文切換數
us:用戶空間佔用的比例
sy:內核空間消耗cpu時間比例
id:空閒比例
wa:等待io完成時間的比例
st:被虛擬機偷走的時間
9.進程通信:IPC
恭享內存
信號:signal
1:SIGHUP 不需要重啓進程,重讀配置文件
2:SIGINT Ctrl+C
9:SIGKILL 強行殺死
15:SIGTERM 正常終止
19:SIGSTOP 停止
18: SIGCONT 繼續
kill –signal pid
killall processname 殺死某個進程
管道:
套接字:
10,調整進程優先級
nice –n # COMMAND
renice # PID
11,作業控制
&後臺運行
nohup不依靠終端運行
bg %jobnum 讓作業後臺運行
jobs查看後臺運行列表
fg 調回前臺運行
kill %jobnum 殺死作業
12,pidof 查看進程pid
二,函數:
結構化編程,不能獨立運行,需要調用時執行,可以多次調用
定義一個函數:
function FUNCNAME {
command
}
自定義狀態返回值:return
函數也可以接受參數。