🍖Linux程序管理
阿新 • • 發佈:2020-11-04
一.程序介紹
1.程序
- 程式: 存放程式碼的檔案(靜態概念)
- 程序: 程式執行的過程(動態概念)
- 同一個程式可能對應多個程序
- 父程序: 程式執行時產生的第一個程序
- 子程序: 由父程序衍生出來的程序(比如在bash裡再開一個bash)
- 如果父程序終止,子程序也會隨之終止
- 程序是作業系統最核心的概念
2.並行與併發
- 併發: 多個任務看起來是同時執行的
- 並行: 多個任務真正的同時執行(只有多核再能實現並行)
3.執行緒
- 執行緒是程序內程式碼執行的過程
- 執行緒才是CPU上的執行單位
- 一個程序至少有一個執行緒
- 強調:CPU只做程式碼的執行,而不涉及I/O操作
4.任務三種狀態
- 執行態
- 就緒態
- 阻塞態
- 不是阻塞態就是非阻塞態
5.提交任務的兩種方式
- 同步
同步是指傳送方傳送資料後, 等接收方發回響應後才發下一個數據報的通訊方式
- 非同步
非同步是指傳送方發出資料後, 不等接收方發回響應, 接著就發下個數據包的通訊方式
- 例子
1.快遞小哥給你送快遞,如果他打電話叫你過來拿,他在那裡等你,等你從他手上把快遞拿走了他才去送別人的快遞,這個就稱之為同步
2.快遞小哥把你快遞放在豐巢櫃或者驛站,然後打個打電話或者發個資訊告訴你快遞到了讓你自己去拿,然後小哥去幹別的事了,這個就是非同步(效率更高一點)
二.程序資訊的檢視
1.ps aux 組合命令,檢視程序資訊
-a | 顯示一個終端的所有程序 |
---|---|
-u | 選擇有效的使用者ID或者是使用者名稱 |
-x | 顯示沒有控制終端的程序,同時顯示各個命令的具體路徑 |
2.命令顯示結果
3.首行資訊代表含義
USER | 執行程序的使用者 |
---|---|
PID | 程序執行的ID號 |
%CPU | 程序佔用CPU百分比 |
%MEM | 程序佔用記憶體百分比 |
VSZ | 程序佔用虛擬記憶體的大小(單位: KB) |
RSS | 程序佔用實體記憶體的實際大小(單位: KB) |
TTY | 程序執行的終端(tty1, pts/0虛擬終端等) |
STAT | 程序執行過程中的狀態(R S D T Z X < N s + l |) "man"查詢 |
START | 程序啟動時間 |
TIME | 程序佔用CPU的總時間("0"表示還沒有超過"1"秒) |
COMMAND | 程式執行指令,有[ ]代表核心態程序,沒有[ ]代表使用者態程序 |
-
VSZ : 是指已分配的線性空間大小, 這個大小通常並不等於程式實際用到的記憶體大小,(記憶體對映, 共享的動態庫, 或向系統申請了更多的堆都會擴大線性空間)
-
RSS : 常駐記憶體大小, 即程序實際佔用的實體記憶體大小
-
STAT程序狀態
R | 程序執行 |
---|---|
S | 可中斷睡眠(sleep),執行I/O操作可得到硬體裝置響應 |
D | 不可中斷睡眠, 執行I/O操作得不到硬體裝置的響應 |
T | 停止的程序 |
Z | 殭屍程序 |
s | 大S後面的小s,代表包含子程序 |
< | 優先順序較高的程序 |
N | 優先順序較低的程序 |
+ | 前臺執行的程序 |
|(管道符號) | 代表多程序 |
X | 死掉的程序(幾乎看不見,死掉後就被回收了) |
l(小寫l) | 以多執行緒的方式執行 |
- D狀態與Z狀態的程序都無法使用 kill -9 殺死
4.ps -elf 檢視命令
- 選項
-e | 顯示所有程序 |
---|---|
-f | 全格式 |
-l | 長格式 |
- 三種檢視效果對比(PPID代表當前程序的父程序)
5.檢視程序不同狀態
- S+狀態與T狀態切換