1. 程式人生 > >Linux之程序管理【重要】

Linux之程序管理【重要】

一、基本介紹

1、 在LINUX中,每個執行的程式(程式碼)都稱為一個程序。每一個程序都分配一個ID號。
2、每一個程序,都會對應一個父程序,而這個父程序可以複製多個子程序。例如www伺服器。
3、每個程序都可能以兩種方式存在的。前臺與後臺,所謂前臺程序就是使用者目前的螢幕上可以進行操作的。後臺程序則是實際在操作,但由於螢幕上無法看到的程序,通常使用後臺方式執行。
4、 一般系統的服務都是以後臺程序的方式存在,而且都會常駐在系統中。直到關機才才結束。

二、顯示系統執行的程序

1、基本介紹
ps命令是用來檢視目前系統中,有哪些正在執行,以及它們執行的狀況。
可以不加任何引數.
這裡寫圖片描述

ps -a :顯示當前終端的所有程序資訊
ps -u :以使用者的格式顯示程序資訊
ps -x :顯示後臺程序執行的引數

這裡寫圖片描述

2、ps詳解
1) 指令:ps –aux|grep xxx ,比如我看看有沒有sshd服務
2) 指令說明

  • System V展示風格
  • USER:使用者名稱稱
  • PID:程序號
  • %CPU:程序佔用CPU的百分比
  • %MEM:程序佔用實體記憶體的百分比
  • VSZ:程序佔用的虛擬記憶體大小(單位:KB)
  • RSS:程序佔用的實體記憶體大小(單位:KB)
  • TT:終端名稱,縮寫 .
  • STAT:程序狀態,其中S-睡眠,s-表示該程序是會話的先導程序,N-表示程序擁有比普通優先順序更低的優先順序,R-正在執行,D-短期等待,Z-僵死程序,T-被跟蹤或者被停止等等
  • STARTED:程序的啟動時間
  • TIME:CPU時間,即程序使用CPU的總時間
  • COMMAND:啟動程序所用的命令和引數,如果過長會被截斷顯示

3、應用例項
要求:以全格式顯示當前所有的程序,檢視程序的父程序。
1) ps -ef是以全格式顯示當前所有的程序
2)-e 顯示所有程序。-f 全格式。
3)ps -ef|grep xxx

  • 是BSD風格

  • UID:使用者ID

  • PID:程序ID

  • PPID:父程序ID

  • C:CPU用於計算執行優先順序的因子。數值越大,表明程序是CPU密集型運算,執行優先順序會降低;數值越小,表明程序是I/O密集型運算,執行優先順序會提高

  • STIME:程序啟動的時間

  • TTY:完整的終端名稱

  • TIME:CPU時間

  • CMD:啟動程序所用的命令和引數

三、終止程序kill和killall

1、基本介紹:
若是某個程序執行一半需要停止時,或是已消了很大的系統資源時,此時可以考慮停止該程序。使用kill命令來完成此項任務。
2、基本語法:

kill  [選項] 程序號(功能描述:通過程序號殺死程序)
killall 程序名稱    (功能描述:通過程序名稱殺死程序,也支援萬用字元,這在系統因負載過大而變得很慢時很有用)

3、常用選項:
-9 :表示強迫程序立即停止
4、最佳實踐:
案例1:踢掉某個非法登入使用者

使用 ps -ef | grep sshd , 找到 該使用者對於的終端.=>對於一個程序號
kill -9 程序號

案例2: 終止遠端登入服務sshd, 在適當時候再次重啟sshd服務

使用 ps -ef | grep sshd 
kill -9     程序號                       /usr/sbin/sshd 對於的程序號

案例3: 終止多個gedit 編輯器

killall 程序名 //使用比較多

案例4:強制殺掉一個終端

ps -aux | grep bash //找到使用者名稱
kill -9 對於id

四、檢視程序樹pstree

1、基本語法:

pstree [選項] ,可以更加直觀的來看程序資訊

2、常用選項:
-p :顯示程序的PID
-u :顯示程序的所屬使用者

3、應用例項:
案例1:請你樹狀的形式顯示程序的pid

pstree  -p

案例2:請你樹狀的形式程序的使用者id

pstree  -u

五、服務(service)管理

1、基本介紹:
服務(service) 本質就是程序,但是是執行在後臺的,通常都會監聽某個埠,等待其它程式的請求,比如(mysql , sshd 防火牆等),因此我們又稱為守護程序,是Linux中非常重要的知識點。
2、service管理指令:
service 服務名 [start | stop | restart | reload | status]
在CentOS7.0後 不再使用service ,而是 systemctl
3、使用案例:
1) 檢視當前防火牆的狀況,關閉防火牆和重啟防火牆。
這裡寫圖片描述
4、細節討論:
1) 關閉或者啟用防火牆後,立即生效。[telnet 測試 某個埠即可]
2) 這種方式只是臨時生效,當重啟系統後,還是迴歸以前對服務的設定。
3) 如果希望設定某個服務自啟動或關閉永久生效,要使用chkconfig指令。
5、檢視服務名:
方式1:使用setup -> 系統服務 就可以看到。
方式2: /etc/init.d/服務名稱

6、服務的執行級別(runlevel):
1)檢視或者修改預設級別: vi /etc/inittab

2)Linux系統有7種執行級別(runlevel):常用的是級別3和5

  • 執行級別0:系統停機狀態,系統預設執行級別不能設為0,否則不能正常啟動

  • 執行級別1:單使用者工作狀態,root許可權,用於系統維護,禁止遠端登陸

  • 執行級別2:多使用者狀態(沒有NFS),不支援網路

  • 執行級別3:完全的多使用者狀態(有NFS),登陸後進入控制檯命令列模式

  • 執行級別4:系統未使用,保留

  • 執行級別5:X11控制檯,登陸後進入圖形GUI模式

  • 執行級別6:系統正常關閉並重啟,預設執行級別不能設為6,否則不能正常啟動

3)開機的流程說明:
這裡寫圖片描述
7、chkconfig指令

  • 介紹
    通過chkconfig 命令可以給每個服務的各個執行級別設定自啟動/關閉

  • 基本語法

 1) 檢視服務 chkconfig     --list|grep  xxx  
 2) chkconfig   服務名   --list 
 3)  chkconfig   --level  5   服務名   on/off   
  • 應用例項:
    1) 案例1: 請顯示當前系統所有服務的各個執行級別的執行狀態
    service iptables status
    2) 案例2 :請檢視sshd服務的執行狀態
    service iptables status | grep sshd
    3) 案例3: 將sshd 服務在執行級別5下設定為不自動啟動,看看有什麼效果?
    chkconfig –level 5 sshd on
    4) 案例4: 當執行級別為5時,關閉防火牆。
    chkconfig –level 5 iptables off
    5) 案例5: 在所有執行級別下,關閉防火牆
    chkconfig iptables off
    6) 案例6: 在所有執行級別下,開啟防火牆
    chkconfig iptables on

  • 使用細節
    1) chkconfig重新設定服務後自啟動或關閉,需要重啟機器reboot才能生效.

六、動態監控程序

1、基本介紹:
top與ps命令很相似。它們都用來顯示正在執行的程序。Top與ps最大的不同之處,在於top在執行一段時間可以更新正在執行的的程序。
2、基本語法:

top [選項]

3、選項說明:

選項 功能
-d 秒數 指定top命令每隔幾秒更新。預設是3秒在top命令的互動模式當中可以執行的命令:
-i 使top不顯示任何閒置或者僵死程序。
-p 通過指定監控程序ID來僅僅監控某個程序的狀態。

比如:我們希望每隔1秒就動態的採集一下系統的狀態
top -d 1

  • top的輸出的說明
    這裡寫圖片描述

4、互動操作說明:
1)選項

操作 功能
P 以CPU使用率排序,預設就是此項
M 以記憶體的使用率排序
N 以PID排序
q 退出top

2)應用例項:
案例1.監視特定使用者

top:輸入此命令,按回車鍵,檢視執行的程序。
u:然後輸入“u”回車,再輸入使用者名稱,即可

案例2:終止指定的程序。

top:輸入此命令,按回車鍵,檢視執行的程序。
k:然後輸入“k”回車,再輸入要結束的程序ID號

5、監控網路狀態
檢視系統網路情況netstat

  • 基本語法
      netstat [選項]
  • 選項說明
-an  按一定順序排列輸出
-p  顯示哪個程序在呼叫
  • 應用案例

請檢視服務名為 sshd 的服務的資訊。

shell>netstat -anp | grep sshd

6、檢測主機連線命令ping:
是一種網路檢測檢測工具,它主要是用檢測遠端主機是否正常,或是兩部主機間的介質是否為斷、網線是否脫落或網絡卡故障。
如: ping 對方ip地址