程序(特別概念四)

2021-07-25 02:20:06 字數 2582 閱讀 7126

1、程序分類

互動程序、批處理程序、守護程序

守護程序:由系統在開機時,通過指令碼自動啟用啟動或超級管理使用者root來啟動,如/etc/init.d/httpd就是httpd伺服器的守護程序,/etc/init.d/httpd檔案:定義httpd伺服器的啟動指令碼執行級別

2、程序的屬性

程序id(pid):用來區分程序,數值

父程序和父程序的id(ppid)

啟動程序的使用者id(uid)和所歸屬的組(gid)

程序狀態:狀態分別為執行r、休眠s、殭屍z

程序執行的優先順序

程序所連線的終端名

程序資源占用,如占用資源大小(記憶體、cpu佔用量)

3、父程序和子程序

父程序和子程序的關係是管理和被管理的關係。

當父程序終止時,子程序也隨之終止;子程序終止,父程序並不一定終止

4、ps監視程序工具

ps的引數

l:長格式輸出

u:按使用者名稱和啟動時間的順序來顯示程序

j:用任務格式來顯示程序

f:用樹狀格式來顯示程序

a:顯示所有使用者的所有程序(包括其他使用者)

x:顯示無控制終端的程序

r:顯示執行中的程序

ww:避免詳細引數被截斷

*常用的選項組合時aux或lax、f

ps應用舉例

ps aux (最常用),用管道和more連線起來分頁檢視

# ps -aux |more
# ps -aux > ps001.txt

# more ps001.txt //把所有的程序顯示出來,並輸出到ps001.txt檔案,然後通過more來分頁檢視

提取指定程式的程序

父程序和子程序的關係友好判斷的例子

5、pgrep查詢程序工具:通過程序名字來查詢程序的工具,用來判斷程序是否正在執行

引數l:列出程式名和程序id

o:程序起始的id

n:程序終止的id

6、kill、killall、pkill、xkill終止程序的工具

場景:乙個程式已經死掉,但又不能退出

應用的場合在伺服器管理中,在不涉及資料庫伺服器程式的父程序的停止執行時(這些工具強行終止資料庫伺服器,會讓資料庫產生更多的檔案碎片,碎片多了,資料庫會崩潰),如mysql伺服器最好時按其正常的程式關閉,而不是用pkill mysqld這樣來關閉

kill函式:kill  [訊號**]  程序id

# kill 4840                      //殺掉4840這個程序

# ps -auxf |grep httpd //檢視httpd伺服器仍在進行

# kill 4830 //殺掉httpd的父程序

# ps -qux |grep httpd //檢視httpd的其他子程序食肉仍在執行

kill -9:對於殭屍程序來強制終止退出

killalll函式:可以通過程式的名字直接殺死所有程序,killall   正在執行的程式名

# pgrep -l gaim                  //檢視哪些程式執行

2979 gaim

# killall gaim

pkill函式:#pkill 正在執行的程式名

# pgrep - l gaim

2979 gaim

# pkill gaim

xkill函式:在桌面上用殺死圖形介面的程式

# xkill

7、top

# top

8、程序的優先順序:nice和renice

9、linux程序結構

linux乙個程序:在記憶體裡有三部分資料:

資料段(存放程式的全域性變數、常數、動態資料分配的資料空間)

堆疊段(存放子程式的返回位址、子程式的引數、程式的區域性變數),系統如果同時執行數個相同的程式,它們之間不能使用同乙個堆疊段和資料段

**段(存放了程式**的資料),假如機器中有數個程序執行同一程式,那麼可以使用乙個**段

10、linux程序排程 

程式使用cpu模式:io密集型(響應時間非常重要)、計算密集型(cpu周轉時間比較重要)、平衡型(響應和周轉之間的平衡時最重要的)

11、程序建立

linux主要提供了fork、vfork、clone三種程序建立的方法

12、殭屍程序:已經結束了程序,沒有任何執行**,也不能被排程,僅僅在程序列表中保留乙個位置,記載該程序的退出狀態等資訊供其他程序收集。需要等它的父程序來為它收屍

避免殭屍程序:父程序通過wait和waitpid等函式等待子程序結束

程序與多程序概念

程序 process 是計算機中程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統機結構基礎。狹義定義 程序是正在執行的程式的例項。在同一時間,同一作業系統中有兩個或兩個以上的程式處於執行狀態。php 提供了程序控制的擴充套件 pcntl。pcntl 實現了unix ...

程序概念和程序狀態

檢視程序 程序狀態 孤兒程序 執行中的程式。對於作業系統來說就是pcb程序控制塊,在linux中就是乙個task struct結構體。是作業系統對程式執行的動態描述,系統通過這個描述實現程式執行的管理和排程。要執行main這個程式,作業系統找到對應main的pcb,在pcb上讀取main執行所需要的...

程序的概念

程序是可以與其他程式併發執行的一次執行過程,是系統進行資源分配和呼叫度的基本單位。程序是乙個程式關於某個資料集的一次執行。也就是說,程序是執行中的程式,是程式的一次執行活動。相對於程式而言,程序是乙個動態的概念,而程式是乙個靜態的概念,是指令的集合。因此,程序是具有動態性和併發性的。從靜態的角度看,...