1. 程式人生 > 實用技巧 >🍖Linux程序管理

🍖Linux程序管理

一.程序介紹

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狀態切換