系統進程
什麼是進程
進程就是系統未完成並且正在進行的工作
查看進程
1.圖形查看
gnome-system-monitor
2.進程查看命令
ps -A | #所有進程 |
---|---|
ps -a | #在當前環境中運行的進程,不包含環境信息 |
ps -u | #顯示進程用戶信息 |
ps a | #在當前用戶環境中運行的進程 |
ps x | #列出系統中所有運行包含tty輸出設備 |
ps f | #顯示進程的父子關係 |
ps e | #顯示進程的詳細信息(系統資源的調用) |
- ps -A #所有進程
- ps -a #在當前環境中運行的進程,不包含環境信息
- ps -u #顯示進程用戶信息
- ps a #在當前用戶環境中運行的進程
- ps x #列出系統中所有運行包含tty輸出設備
- ps f #顯示進程的父子關係
- ps e #顯示進程的詳細信息(系統資源的調用)
##ps常用組合
ps aux | #顯示系統中所有進程並顯示進程用戶 |
---|---|
ps ef | #顯示進程詳細信息並顯示進程父子關係 |
ps ax | #顯示當前系統中的所有進程 |
pstree | #顯示當前系統的進程樹 |
- ps aux #顯示系統中所有進程並顯示進程用戶
- ps ef #顯示進程詳細信息並顯示進程父子關係
- ps ax #顯示當前系統中的所有進程
- pstree #顯示當前系統的進程樹
##顯示進程指定信息
ps -o xxx | #顯示進程的指定信息 |
---|---|
ps -o comm | #進程名稱 |
ps -o user | #進程所有人 |
ps -o group | #進程所有組 |
ps -o %cpu | #進程cpu使用率 |
ps -o %mem | #進程內存使用率 |
ps -o pid | #進程id |
ps -o nice | #進程優先級 |
- ps -o xxx #顯示進程的指定信息
- ps -o comm #進程名稱
- ps -o user #進程所有人
- ps -o group #進程所有組
- ps -o %cpu #進程cpu使用率
- ps -o %mem #進程內存使用率
- ps -o pid #進程id
- ps -o nice #進程優先級,進程的優先級範圍-20~19 ,優先級數字越小,進程優先級越高
##進程排序
- ps --sort=+%cpu|-%cpu #+加號可加可不加默認從低到高排列
- ps --sort=+%men|-%men
##測試
抓取系統中內存使用量排在前五的進程的pid
首先我們可以通過指令
ps ax --sort=-%mem -o pid
查看系統中所有進程pid並按內存使用量由高到低排列
然後通過指令
head -n 6 | tail -n 5 或sed -n 2,6p
抓取前五行
或
##stat中顯示的信息
可通過ps -o stat 查看
#此處爲了便於stat中所有顯示的信息的展示進程firefox與gedit的優先級已經被手動修改
S | 進程狀態 |
---|---|
I | 內存中有鎖存空間 |
N | 優先級低 |
< | 優先級高 |
+ | 前臺運行 |
s | 頂級進程 |
3.進程優先級
(1)進程的優先級範圍
-20~19 優先級數字越小進程優先級越高
(2)優先級查看
ps -o nice #常和comm,pid一同使用
(3)指定某個優先級開啓進程
nice -n 優先級數字 進程名稱
nice -n -5 vim & #指定vim進程啓動時優先級爲-5
注意:"&"表示進程開啓後打入後臺,如果不加“&“符號 命令行就會被佔用
(4)改變進程優先級
renice -n 優先級數字 +進程pid #指定已經啓動進程優先級
renice -n 10 3529 #更改進程3529的優先級爲10
4.環境中進程的前後臺調用
-
jobs #查看被打入環境後臺的進程
注意:
“+“ 默認級
“ -“ 次默認級
無符號的沒有優先級 -
ctrl+z ##將佔用終端的進程暫停並打入後臺
此時我們再打開gedit窗口
發現gedit已經被暫停,無法對其進行操作 -
fg ##把後臺進程調回前臺,直接執行會默認執行帶“+“的程序
當想指定後臺某進程時可以用
fg jobnumber 將指定進程調出
fg 1 #將後臺進程序號爲1的進程調回前臺
注意:jobnumber時通過jobs命令查到的後臺的進程的序號(不是pid) -
bg ##把後臺暫停的進程運行,直接執行會默認執行帶“+“的程序
bg jobnumber #將指定進程運行
bg 3 #將後臺進程序號爲3的進程運行
command & ##讓命令直接在後臺運行
5.進程信號
(1)常用信號等級 (信號等級共有30個,以下只列出常用的,可通過man 7 signal 查看信號詳細信息)
1 | 進程重新加載配置 |
---|---|
2 | 刪除進程在內存中的數據,對shell相當於ctrl+c 對系統中有鎖存空間的(gedit)相當於關閉該進程 |
3 | 刪除鼠標在內存中的數據 快捷鍵:ctrl+\ 應用:看視頻時全屏鼠標消失 |
9 | 強行結束單個進程(不能被阻塞) |
15 | 正常關閉進程 (可能會被阻塞) |
18 | 運行暫停的進程 |
19 | 暫停某個進程 (不能被阻塞) |
20 | 把進程暫停並打入後臺(可以被阻塞) |
- kill -信號 進程pid
- killall -信號 進程名字
- pkill -u student(username) -信號 #對某用戶所有進程
6.進程的動態監控
top
1 | 顯示cpu 每個核的負載 |
---|---|
s | 調整刷新頻率 |
c | CPU負載排序 |
m | 內存使用量排序 |
h | 查看幫助 |
u | 查看指定用戶進程 |
k | 對指定進程發起信號 |
q | 退出 |
- 1:顯示cpu 每個核的負載
- s:調整刷新頻率爲1s
- c:CPU負載排序
- m:內存使用量排序
- u:查看kiosk用戶進程
- k:對進程15361執行信號9
7.控制服務
(1)什麼是服務
定義:系統中運行的對於系統本身沒有意義,但是對客戶主機有重大意義的程序叫做服務性軟件簡稱服務,服務是一類進程。
(2)用什麼控制服務
系統初始化進程可以對服務進行相應的控制
(3)當前系統初始化進程是什麼
systemd ##系統初始化進程
pstree ##顯示系統中的進程樹
(4)進程控制命令
ssh------->sshd
client server
systemctl | #服務控制 |
---|---|
systemctl status sshd | #查看服務 |
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 | #列出所有服務開機啓動的狀態disable(開機不啓動的),enable(開機啓動),static(靜態的),maskd(凍結的) |
systemctl mask sshd | #凍結sshd服務 |
systemctl unmask sshd | #解鎖sshd服務 |
systemctl list-dependencies | #列出服務器的倚賴(倚賴:需要另一個服務是開啓的) |
systemctl set-default multi-user.target | #設定系統啓動級別爲多用戶模式(無圖形) |
systemctl set-default graphical.target | #設定系統啓動級別爲圖形模式 |
- systemctl status sshd #查看服務
- systemctl stop sshd #關閉服務
- systemctl start sshd #開啓服務
- systemctl disable sshd #設定服務開機不啓動
- systemctl enable sshd #設定服務開機啓動
- systemctl list-units #列出已經開啓服務當前狀態
- systemctl list-unit-files #所有服務開機啓動的狀態 disable(開機不自啓),enable(開機自啓),static(靜態的),maskd(凍結的)
- systemctl mask sshd #凍結sshd服務
- systemctl unmask sshd #解鎖sshd服務
- systemctl list-dependencies #列出服務器的倚賴