文章目錄
- 1.程序
-
- 1.1.程序的定義
- 1.2.程序&線程
- 1.3.程序的狀态
- 2.程序檢視指令
-
- 2.1.圖形程序檢視工具:
gnome-system-monitor
- 2.2.程序檢視:
ps
- 2.3.程序過濾:
pgrep
- 2.4.檢視vim的pid:
pidof vim
- 2.5.動态程序檢視:
top
- 2.1.圖形程序檢視工具:
- 3.程序優先級
- 4.程序前背景調用
- 5.程序信号
- 6.systemd守護程序
- 7.系統中的登陸審計
1.程序
1.1.程序的定義
- 程式:靜态的代碼檔案
- 程序:
- 程式運作時的形态
- 程式的一個副本
- 有生命周期(準備期,運作期,終止期)
1.2.程序&線程
- 程序:資源調用的最小機關
- 線程:程序的最小機關
程式執行流是從上到下貫穿運作;
當程序是多任務、CPU是多核心時,多任務應該同時被每個核心處理,每個核心處理的任務叫線程;
線程資源是共享的;
1.3.程序的狀态
R(TASK_RUNNING) | 可執行态(running,ready) |
S(TASK_INTRRUPTABLE) | 可喚醒休眠 |
D(TASK_UNINTRRRUPTABLE) | 不可喚醒休眠 |
T(TASK_STOP) | 暫停狀态 |
Z(EXIT_ZOBIE) | 僵死态 |
2.程序檢視指令
2.1.圖形程序檢視工具: gnome-system-monitor
gnome-system-monitor
2.2.程序檢視: ps
ps
ps指令三種執行風格(unix bsd GNU)
a | 與終端相關的程序 |
x | 與終端無關的程序 |
u | 使用者資訊歸類的檢視方式 |
f | 程序層級關系 |
o | 顯示指定參數 pid , comm , nice , pri , pcpu , ppid , stat , user , group |
-e | 顯示所有程序 |
-f | 顯示資訊的完整格式 |
-H | 顯示程序的層級結構 |
-o | 顯示指定參數 |
--sort= | 排序顯示(正序;倒序:給排序名額前加負号) |
- ps ax顯示資訊如下:
PID | 程序id |
TTY | 程序用到的終端 |
STAT | 程序狀态 |
TIME | 程序占用CPU時長 |
COMMAND | 程序名稱 |
- ps aux顯示資訊如下:
USER | 程序所有人 |
PID | 程序id |
%CPU | 程序使用CPU的用量 |
%MEM | 程序所用到的記憶體用量 |
VSZ | 程序使用的虛拟記憶體大小 |
RSS | 程序常駐記憶體中的資料大小 |
TTY | 程序用到的終端 |
STAT | 程序狀态 |
START | 程序運作時長 |
TIME | 程序占用CPU時長 |
COMMAND | 程序名稱 |
2.3.程序過濾: pgrep
pgrep
-u uid | 顯示指定使用者程序 |
-U user | 顯示指定使用者程序 |
-t tty | 顯示指定用終端程序 |
-l | 顯示程序名稱 |
-a | 顯示程序的完整名稱 |
-P | 顯示程序的子程序 |
2.4.檢視vim的pid: pidof vim
pidof vim
2.5.動态程序檢視: top
top
- top中的内容顯示資訊
09:48:51 | 系統時間 |
up 18:53 | 運作時長 |
2 users | 系統中有兩個使用者登入 |
load average: 0.75,0.53,0.41 |
- Tasks:
331 total | 任務總量 |
3 running | 正在運作 |
329 sleeping | 休眠人物數量 |
0 stopped | 被暫停數量 |
0 zombie | 僵死人物數量 |
- %CPU
1.5 us | 使用者空間 |
1.9 sy | 核心空間 |
0.0 ni | nice值調整空間 |
58.9 id | 空閑時間 |
0.0 wa | 等待io時間 |
2.1 hi | 處理硬體中斷時間 |
0.2 si | 處理軟體中斷時間 |
0.0 st | 被偷走的時間(vm使用時間) |
- MIB Mem
7664.6 total | 總量 |
5383.9 free | 空閑 |
1312.1 used | 占用 |
968.8 buff/cache | 緩存 |
- MiB Swap:交換分區變量
-
top指令的參數
-d | 指定重新整理頻率(預設3s) |
-b | 以批次方式顯示 |
-n | 指定顯示的批次數量 |
-
top内部指令
P | CPU排序 |
M | 記憶體排序 |
T | 累計占用CPU時間排序 |
l | 關閉/開啟uptime資訊 |
t | 關閉/開啟CPU&task |
s | 指定重新整理頻率 |
k | 操作程序 |
u | 檢視指定使用者程序 |
内容:
PID | 程序id | |
USER | 程序所有者的使用者名 | |
PR | 優先級 | |
NI | nice值(負值表示高優先級;正表示低優先級) | |
VIRT | 程序使用的虛拟記憶體總量(機關kb;VIRT=SWAP+RES) | |
RES | 程序使用的、未被換出的實體記憶體大小,(機關kb;RES=CODE+DATA) | |
SHR | 共享記憶體大小(機關kb) | |
S | 程序狀态 | D=不可中斷的睡眠狀态; |
R=運作; | ||
S=睡眠; | ||
T=跟蹤/停止; | ||
Z=僵屍程序 | ||
%CPU | 上次更新到現在的CPU時間占用百分比 | |
%MEM | 程序使用的實體記憶體百分比 | |
TIME+ | 程序使用的CPU時間總計(機關:1/100秒) | |
COMMAND | 指令名稱 |
3.程序優先級
系統是多任務多使用者的操作模式
任務的重要性是有區分的
如何确定任務的重要性:
“優先級”
範圍:0 -> 139
核心自控優先級範圍:0 -> 99
使用者可控優先級:100 -> 139
nice值:(-20) -> 19
- 更改優先級:
renice -n -5 43331
- 指定優先級打開程序:
nice -n -5 cat
-
ps ax -o pid,nice,comm | grep cat
ps ---> pri ---> 0-39
nice 20-19
priority 0-139(100-139)
S | sleeping |
< | 優先級高 |
s | 頂級程序 |
T | stop |
N | 優先級低 |
R | running |
+ | 運作在前台 |
4.程序前背景調用
+ | 把占用shell的程序打入背景挂起 |
bg | 把背景挂起的程序運作起來 |
fg | 把背景程序調回前台 |
& | 運作程序在背景 |
jobs | 檢視目前shell中在背景的所有工作 |
- 示例:
5.程序信号
- 程序信号
1 | 重新加載系統配置檔案 |
2 | 清空記憶體中的程序資料 |
3 | 清空記憶體中的滑鼠(+<\>) |
9 | 強行結束程序(不被阻塞) |
15 | 正常關閉程序(會被阻塞) |
18 | 運作被暫停的程序 |
19 | 暫停程序 |
20 | 暫停程序 |
- 程序信号控制工具
kill 程序信号 pid
killall 程序信号 程序名稱
pkill 程序信号 程序條件
6.systemd守護程序
- 實驗環境:兩台主機
- 遠端操作主機:
ssh 遠端主機IP -l 遠端主機使用者
-
守護程序
(替核心分擔程式控管的程式;通常pid為1)
systemd ---> systemctl
systemctl 管理系統服務
(服務:指在系統中開啟的共享系統資源到網絡中的1程式)
cs client --- server
-
:管理系統服務 用法:systemctl
start | 開啟 | |
stop | 關閉 | |
status | 檢視狀态 | |
reload | 重新加載 | |
restart | 重新啟動服務 | |
enable | 設定服務開機啟動 | |
enable --now | 設定服務開機啟動并目前開啟服務 | |
disable | 設定服務開機不啟動 | |
disable --now | 設定服務開機不啟動并目前關閉服務 | |
list-units | 檢視系統所有服務目前狀态 | |
list-unit-files | 檢視服務開機狀态 | |
list-dependencies | 列出服務依賴性 | |
mask | 當機服務 | |
unmask | 解鎖 | |
set-default | 設定系統運作模式 | multi-user.target 無圖形網絡模式 3 |
graphical.target 有圖形網絡模式 5 | ||
get-default | 檢視系統運作模式 |
- 系統運作模式(0-6)
PowerOff | |
1 | single-單使用者模式 |
2 | noG+NETWORK -多使用者模式,無NFS |
3 | 指令行模式 無桌面程式( init 3 ) |
4 | 暫時沒有被使用 |
5 | G+NETWORK ( init 5 ) |
6 | REBOOT-重新開機模式(init 6) |
- 示例: