1.什麼是程序?
程式(program)放置在儲存媒體中(如硬碟/CD光牒/軟碟/錄音帶等),為實體檔案的形态存在
程序:程式被觸發後,執行者的權限與屬性,程式的程式碼與所需資料等都會被載入記憶體中,作業系統并給予這個記憶體内的單元一個識别碼(PID),可以說,程序就是一個正在運作中的程式。
程序狀态:
R(Running):該程式正在運作中
S(sleeping) :該程式目前在睡眠狀态(idle)但可以被喚醒(signal)
D不可被喚醒的睡眠狀态,通常程序可能在等待I/O的情況
T停止狀态(stop)可能是在工作控制(背景暫停)或除錯(traced)狀态 可以通過指令強制喚醒
Z(Zombie):僵屍狀态,程式已經終止但卻無法被移除至記憶體外
2.檢視程序:
(1)圖形方式檢視
gnome-system-monitor

(2)在指令行裡檢視系統程序 ps
ps -a | 在shell中運作的所有程序,不包含環境資訊 |
ps a | 在shell中運作的所有程序, 包含環境資訊 |
ps -A | 所有程序,包括環境 |
ps -d | 所有程序但不包括shell資訊 |
ps e | 顯示程序的擴充資訊 |
ps x | 顯示左右有輸出裝置(有tty終端)的程序 |
ps -u | 顯示使用者資訊 |
ps f | 顯示從屬關系 |
ps -a shell下的所有程序不包含環境資訊
pa a 同上 包含環境資訊
ps -A /-e 所有程序
ps -d 所有程序但不包括shell資訊
ps ae 顯示程序的擴充資訊
ps x 顯示左右有輸出裝置(有tty終端)的程序
ps -u 顯示使用者資訊
ps f 顯示從屬關系
ps e 顯示程序的詳細資訊(系統資源的調用)
ps常用組合
ps af 顯示程序的從屬關系(父程序停止 子程序自動結束,但有例外,孤兒程序不受父程序控管,隻受系統初始化程序控管)
ps aux 顯示系統中所有程序并顯示程序使用者
ps ef 顯示程序詳細資訊并顯示程序父子關系
ps ax 顯示目前系統中
pstree 顯示系統樹
##顯示程序指定資訊
ps -o xxx ##顯示程序的指定資訊
comm##程序名稱
user##程序所有人
group##程序所有組
%cpu ##程序cpu使用率
%mem ##程序記憶體使用率
pid ##程序id
nice ##程序優先級
可以一次顯示所有想看的程序資訊
## 程序排序
ps ax --sort=
+%cpu|-%cpu
+%mem|-%mem
其中,+表示升序排列,-表示降序排列
對cpu升序排序檢視程序
對mem降序排序檢視程序
實驗:獲得系統中記憶體使用量排在前5的程序id(第一行中為pid的名稱,結果中不需要顯示)
##stat中顯示的資訊##
S | 程序狀态 |
I | 記憶體中有鎖定空間 |
N | 優先級低 |
< | 優先級高 |
+ | 前台運作 |
s | 頂級程序 |
3.程序優先級
(1)程序的優先級範圍
-20~19
(2)優先級檢視
pa ax -o pid,nice,comm
(3)指定某個優先級開啟程序
nice -n 優先級數字 程序名稱
nice -n 5 gedit ##開啟gedit并且指定程式優先級為5
低優先級 5 多個N
高優先級 -5 <
指令行中
renice -n 10 pid
将程序号為31618的vim程序優先級重新設定為-6
4.環境中前背景的調用
jobs ##檢視被打入環境背景的程序
ctrl+z ##把占用終端的程序打入背景
bg jobsnum ##把背景暫停的程序運作
fg jobsnum ##把背景程序調回前台
注意:當不寫jobsnum時,預設調回優先級高的程序。
comm & ##讓指令直接在背景運作
5.程序信号
1.常用信号等級
1 | 程序重新加載配置 |
2 | 删除程序在記憶體中的資料 |
3 | 删除滑鼠在記憶體中的資料 |
9 | 強行結束單個程序(不能被阻塞) |
15 | 正常關閉程序(可能會被阻塞) |
18 | 運作暫停的程序 |
19 | 暫停某個程序(不能被阻塞) |
20 | 把程序打入背景(可以被阻塞) |
man 7 signal | 檢視信号詳細資訊 |
kill -信号 程序pid
killall -信号 程序名稱
pkill -u student -信号
+ 正在接受服務的
- 次優先當+調回前台-->+
實驗為:
删除pid為2372的程序在記憶體中的資料
6.程序的動态監控
top
不同按鍵的作用
1 | 顯示cpu每個核的負載 |
s | 調整重新整理的頻率 |
c | cpu負載排序 |
m | 記憶體使用量排序 |
h | 檢視幫助 |
u | 檢視指定使用者程序 |
k | 對指定程序發起信号 |
q | 退出 |
1. ##顯示cpu每個核的負載
s ##調整重新整理頻率
c ##CPU負載排序
m ##記憶體使用量排序
h ##檢視幫助
u ##檢視指定使用者程序
k ##對指定程序發起信号
q ##退出
7.控制服務
1.什麼是服務?
系統中運作的對于系統本身沒有意義,但對客戶主機有重大意義的程式叫服務性軟體,簡稱服務。
伺服器:安裝了服務性軟體的系統
2.用什麼控制服務
系統初始化程序可以對服務進行相應的控制
3.目前系統初始化程序是什麼
systemd ###系統初始化程序
pstree ###顯示系統中的程序樹
4.程序控制指令
ssh----->shhd
client server
systemctl ##服務控制指令
systemctl status sshd ##檢視服務狀态,inactive(不可用)active(可用)
systemctl start sshd ##開啟服務
systemctl stop sshd ##關閉服務
systemctl restart sshd ##重新開機服務
systemctl reload sshd ##重新加載服務配置
systemctl enable sshd ##設定服務開機啟動
systemctl disable sshd ##設定服務開機不啟動
systemctl list-units ##列出已經開啟服務目前狀态
systemctl list-unit-files ##列出所有服務開機啟動的狀态
systemctl list-dependencies ##列出服務的依賴
systemctl set-default multi-user.target ##設定系統啟動級别為多使用者模式(無圖形)
systemctl set-default graphical.target ##設定系統啟動級别為圖形模式