Linux进程详解
一.概述
進程就是系統運行中的程序(process)
是正在執行的一個程序或者命令,每一個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統資源
例如windows安裝程序,先下載程序安裝包,安裝到指定硬盤。
雙擊運行后系統就會有對應的應用進程顯示。
進程會占用四類資源,CPU,memory,disk,network
CPU (Central Processing Unit 中央處理單元 )lscpu命令可以看到CPU的詳細信息
Memory(內存)free -h命令可以查看系統內存大小
Disk(磁盤)
Network(網絡)
二.進程管理
1.進程管理的作用:(1)判斷系統的健康狀態(2)查看系統的所有進程(3)結束相應進程
查看系統當前進程
ps aux(查看當前時間節點進程信息)
ps aux | grep zx ( 表示查找zx用戶使用的進程,)
ps le \ps ef(l表示顯示詳細信息,e表示顯示所有進程)
USER:該進程是由那個用戶產生的
PID:進程的ID編號
%CPU:該進程的CPU資源占用百分比
%MEM:該進程的內存資源占用百分比
VSZ:該進程的虛擬內存的大小,單位KB(將磁盤的一部分空間轉為虛擬內存使用,在物理內存使用占滿后才會用到)
RSS:該進程占用實際物理內存的大小,單位KB
TTY:該進程是在哪個終端上運行的(TTY1~TTY6代表本地控制臺終端。TTY1是圖形終端,TTY2~6是本地的字符界面終端。PTS/0-255代表虛擬終端。)
STAT:進程狀態。R:運行、S:睡眠、T:停止、s:包含子進程、+:位于后臺
START:該進程啟動時間
TIME:該進程占用系統得到運算時間(注意不是系統時間)
COMMAND:產生此進程的命令名
?top (表示進入監聽模式,輸入h顯示幫助,輸入P以cpu進行排序,M以內存排序,N以PID排序,輸入q可以退出,該命令可以動態顯示進程的信息變化)
????????第一行是系統信息:? ??
?16:34:25 是系統時間;Up1day,14:17是系統運行時間;1 user是系統當前登錄用戶數量;
? ? ? load average:0.00,0.00,0.00是系統1分鐘5分鐘15分鐘內的平均負載。大于1表示超負載
????????第二行是進程信息:
Tasks:290total表示系統進程總數;running表示正在運行的進行;sleeping表示睡眠的進程
stopped便是已停止的進程;zombie表示僵尸進程(如果不是0,需要手動檢查)
????????第三行是cpu信息:
us表示用戶占用cpu百分比;sy表示系統占用cpu百分比;ni表示改變過優先級的用戶占用百分比
id表示空閑cpu占用百分比;wa表示等待輸入/輸出的進程占用百分比;hi表示硬件中斷請求服務占用百分比;si表示軟件中斷請求服務占用百分比;st表示steal time虛擬時間百分比,就是當有虛擬機時虛擬cpu等待實體cpu的時間百分比
????????第四行是物理內存信息:
Mem表示物理內存總量;used表示以使用的物理內存;free表示閑置物理內存;buffers表示緩沖數量
????????第五行是交換分區(swap)信息:
swap表示交換分區(虛擬內存)的在大小;used表示已經使用的交互分區的大小;free表示空閑交換分區的大小;cached表示作為緩存的交換分區大小
pstree(查看進程樹,可以直觀的看出父進程與子進程的關系)
pstree -p(將進程樹全部展開,查看到對應的PID)
三.終止進程
1, SIGHUP, 該信號讓進程?即關閉,然后重新讀取配置?件之后重啟
2 ,SIGINT ,程序終?信號,?戶終?前臺進程。相當去輸出ctrl+c快捷鍵
9, SIGKILL, ?來?即結束程序的運?,本信號不能被阻塞、忽略。?般 ?于強制終?進程
使用?kill命令終止進程
18, SIGCONT, 信號可以讓暫停的進程恢復執?,本信號不能被阻斷
19, SIGSTOP ,該信號可以暫停前臺進程,相當于輸?crtl+z快捷鍵。本信號 不能被阻斷
kill -1 32411? ?(重啟PID為32411的進程)
kill -9 32425(強制終?PID為32425的進程)
kill -15 32452(相當于kill 32452,正常結束PID為32452的進程)
Linux服務管理
服務就是進程,進程不一定是服務。
服務是具備一定功能的進程,但有些進程并不具備服務的特征
linux中的第一個進程,就是整個系統的父進程。負責了后面所有的其他進程的啟動。
在RHEL6版本之前采用的第一個進程為init,但通過init進程啟動的后續進程都是串行啟動的,串行啟動就意味著速度慢。每個進程需要排隊一個一個啟動
在RHEL7版本至今,采用的第一個進程為systemd。該進程相比init來說,采用了并行啟動的方式,并行啟動就意味著速度更快。
systemd管理的內容不僅僅有service,systemd管理的單位是unit,service只是unit(單位)中的一種。
systemctl list-units (查看systemd管理的信息)systemctl list-unit-files (查看)
????????systemd管理服務(service)操作
systemctl status NetworkManager.service(查看NetworkManager服務的信息)
systemctl stop NetworkMannger(停止NetworkMannger服務)
systemctl start NetworkMannger(啟動NetworkMannger服務)?
systemctl restart NetworkMannger(重新啟動NetworkMannger服務)
????????systemd管理target
target是由服務組成的一組啟動目標。systemd可以設置啟動目標,如果指定了一個target作為啟動目標,那么下次系統啟動時就會啟動target里面的所有服務。
systemctl get-default?(該命令表示顯示下一次啟動哪一個target)
????????multi-user.target?(包含了字符界面組件的linux系統)
systemctl isolate multi-user.target?(該命令表示臨時將系統界面切換到字符界面?)
systemctl set-default multi-user.target?(表示下一次開機啟動將系統界面切換到字符界面?)
????????graphical.target?(包含了圖形界面組件的linux系統)
systemctl isolate graphical.target?(該命令表示臨時將系統界面切換到圖形界面?)
systemctl set-default graphical.target?(表示下一次開機啟動將系統界面切換到圖形界面?)
總結
- 上一篇: JavaWeb在线考试系统(简单版)
- 下一篇: 【Linux】进程概念 —— 进程状态