天天看點

Linux系統入門之程序管理

1.什麼是程序?

程式(program)放置在儲存媒體中(如硬碟/CD光牒/軟碟/錄音帶等),為實體檔案的形态存在

程序:程式被觸發後,執行者的權限與屬性,程式的程式碼與所需資料等都會被載入記憶體中,作業系統并給予這個記憶體内的單元一個識别碼(PID),可以說,程序就是一個正在運作中的程式。

程序狀态:

R(Running):該程式正在運作中

S(sleeping) :該程式目前在睡眠狀态(idle)但可以被喚醒(signal) 

D不可被喚醒的睡眠狀态,通常程序可能在等待I/O的情況

T停止狀态(stop)可能是在工作控制(背景暫停)或除錯(traced)狀态 可以通過指令強制喚醒

Z(Zombie):僵屍狀态,程式已經終止但卻無法被移除至記憶體外

2.檢視程序:

(1)圖形方式檢視

  gnome-system-monitor

Linux系統入門之程式管理

(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下的所有程序不包含環境資訊

Linux系統入門之程式管理

pa  a        同上 包含環境資訊

Linux系統入門之程式管理

ps -A /-e   所有程序

Linux系統入門之程式管理

ps -d        所有程序但不包括shell資訊

Linux系統入門之程式管理

ps ae       顯示程序的擴充資訊

Linux系統入門之程式管理

ps x         顯示左右有輸出裝置(有tty終端)的程序

Linux系統入門之程式管理

ps -u       顯示使用者資訊

Linux系統入門之程式管理

ps f         顯示從屬關系

Linux系統入門之程式管理

ps e        顯示程序的詳細資訊(系統資源的調用)

Linux系統入門之程式管理

ps常用組合

ps af 顯示程序的從屬關系(父程序停止 子程序自動結束,但有例外,孤兒程序不受父程序控管,隻受系統初始化程序控管)

Linux系統入門之程式管理

ps aux 顯示系統中所有程序并顯示程序使用者

Linux系統入門之程式管理

ps ef  顯示程序詳細資訊并顯示程序父子關系

Linux系統入門之程式管理

ps ax  顯示目前系統中

Linux系統入門之程式管理

pstree 顯示系統樹

Linux系統入門之程式管理

##顯示程序指定資訊

ps -o xxx ##顯示程序的指定資訊

      comm##程序名稱

      user##程序所有人

      group##程序所有組

      %cpu ##程序cpu使用率

      %mem ##程序記憶體使用率

      pid  ##程序id

      nice ##程序優先級

Linux系統入門之程式管理

可以一次顯示所有想看的程序資訊

Linux系統入門之程式管理

##  程序排序

   ps ax --sort=

             +%cpu|-%cpu

             +%mem|-%mem

其中,+表示升序排列,-表示降序排列

對cpu升序排序檢視程序

Linux系統入門之程式管理

對mem降序排序檢視程序

Linux系統入門之程式管理

實驗:獲得系統中記憶體使用量排在前5的程序id(第一行中為pid的名稱,結果中不需要顯示)

Linux系統入門之程式管理

##stat中顯示的資訊##

S 程序狀态
I 記憶體中有鎖定空間
N 優先級低
< 優先級高
+ 前台運作
s 頂級程序

3.程序優先級

(1)程序的優先級範圍

-20~19

(2)優先級檢視

pa ax -o pid,nice,comm

Linux系統入門之程式管理

(3)指定某個優先級開啟程序

nice -n 優先級數字   程序名稱

nice -n  5  gedit    ##開啟gedit并且指定程式優先級為5

Linux系統入門之程式管理

低優先級 5 多個N

高優先級 -5 <

指令行中

renice -n 10 pid

将程序号為31618的vim程序優先級重新設定為-6

Linux系統入門之程式管理

4.環境中前背景的調用

jobs               ##檢視被打入環境背景的程序

Linux系統入門之程式管理

ctrl+z             ##把占用終端的程序打入背景

bg jobsnum    ##把背景暫停的程序運作

fg jobsnum     ##把背景程序調回前台

Linux系統入門之程式管理

注意:當不寫jobsnum時,預設調回優先級高的程序。

comm &         ##讓指令直接在背景運作

5.程序信号

1.常用信号等級

1 程序重新加載配置
2 删除程序在記憶體中的資料
3 删除滑鼠在記憶體中的資料
9 強行結束單個程序(不能被阻塞)
15 正常關閉程序(可能會被阻塞)
18 運作暫停的程序
19 暫停某個程序(不能被阻塞)
20 把程序打入背景(可以被阻塞)
man 7 signal 檢視信号詳細資訊

kill    -信号  程序pid

killall -信号  程序名稱

pkill   -u student -信号

+  正在接受服務的

-  次優先當+調回前台-->+

實驗為:

删除pid為2372的程序在記憶體中的資料

Linux系統入門之程式管理

6.程序的動态監控

top

Linux系統入門之程式管理

   不同按鍵的作用

1 顯示cpu每個核的負載
s 調整重新整理的頻率
c cpu負載排序
m 記憶體使用量排序
h 檢視幫助
u 檢視指定使用者程序
k 對指定程序發起信号
q 退出

1.  ##顯示cpu每個核的負載

Linux系統入門之程式管理

    s   ##調整重新整理頻率

Linux系統入門之程式管理

    c   ##CPU負載排序

    m   ##記憶體使用量排序

    h   ##檢視幫助

Linux系統入門之程式管理

    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   ##設定系統啟動級别為圖形模式

繼續閱讀