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地址