linux程序管理
1.程序基本概念
1.程序基本概念
1.什麼是程序
程序(process):正在執行中的程式,使用者下達執行程式的命令後,就會產生程序。同一程式可產生多個程序(一對多關係),以允許同時有多位使用者執行同一程式,卻不會相衝突。
程序需要一些資源才能完成工作,如cpu使用時間、儲存器、檔案以及i/o裝置,且為依序逐一進行,也就是每個cpu核心任何時間內僅能執行一項程序。
程序是使用資源的最小單位
process:執行中的程式的乙個副本,是被載入記憶體的乙個指令集合程序id(process id,pid)號碼被用來標記各個程序uid、gid、和selinux語境決定對檔案系統的訪問和訪問許可權通常從執行程序的使用者來繼承存在生命週期
程序建立:init:第乙個程序程序:都由其父程序建立,父子關係,cowfork(), clone()
2.程序,執行緒
程序是資源的集合,執行緒是執行程式的最小單位
3.程序優先順序
程序優先順序:系統優先順序:數字越小,優先順序越高0-139(centos4,5)各有140個執行佇列和過期佇列0-98,99(centos6)實時優先順序: 99-0 值最大優先順序最高nice值:-20到19,對應系統優先順序100-139或99
4.程序間通訊
ipc:inter process communication
? 同一主機:signal:訊號
? shm:shared memory
? semaphore:訊號量,一種計數器
? 不同主機:socket:ip和埠號
? rpc:remote procedure call
? mq:訊息佇列,kafka,activemq
程序型別:
? 守護程序:daemon,在系統應道過程中啟動的程序,和終端無關
? 前台程序:跟終端相關,通過終端啟動的程序
? 注意:可相互轉化
程序狀態:
? 執行態:running
? 就緒態:ready
? 睡眠態:可終端:interruptable
? 不可中斷:uninterruptable
? 停止態:stopped,暫停於記憶體,但不會被排程嗎,除非手動啟動
? 僵死態:zombie,結束程序,父程序結束前,子程序不關閉
記憶體洩漏:out of mem簡稱oom導致原因記憶體不釋放,程式寫的有問題
記憶體溢位:overflow,使用的記憶體超出了申請的記憶體
2.系統管理工具
程序分類:
? cpu-bound:cpu密集型,非互動
? io-bound:io密集型,交換
linux系統狀態的檢視及管理工具:pstree,ps,pidof,pgrep,top,htop,glance
? pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup
pstree命令:pstree display a tree of processes
ps: process state
? ps report a snapshot of the current processes
? linux系統各程序的相關資訊均儲存在/proc/pid目錄下的各檔案中
2命令ps:檢視程序
選項:? 預設顯示當前終端中的程序
a 選項包括所有終端中的程序
x 選項包括不鏈結終端的程序
u 選項顯示程序所有者的資訊
f 選項顯示程序樹,相當於--forest
kl --sore 屬性 對屬性排序,屬性前加-表示倒序
o 屬性...選項顯示定製的資訊pid,cmd,%cpu,%mem,psr
l 顯示支援的屬性列表
-c cmdlist 指定命令,多個命令用,分隔
常用 ps aux 檢視所有終端的使用者程序資訊包括不鏈結終端的裝置
? ps axo pid,%cpu,%mem,cmd k -%cpu 檢視定製資訊 按cup使用率排序
? ps -c passwd 只看某個指定命令的程序
? ps -c f2.sh 也可以指定指令碼名稱檢視
ps輸出屬性
vsz: virtual memory size,虛擬記憶體集,線性記憶體rss: resident size, 常駐記憶體集stat:程序狀態r:runnings: interruptable sleepingd: uninterruptable sleepingt: stoppedz: zombie+: 前台程序l: 多執行緒程序l:記憶體分頁並帶鎖n:低優先順序程序<: session leader>
-c cmdlist 指定命令,多個命令用,分隔
-l 顯示執行緒?-e: 顯示所有程序,相當於-a
-f: 顯示完整格式程式資訊
-f: 顯示更完整格式的程序資訊
-h: 以程序層級格式顯示程序相關資訊
-u userlist 指定有效的使用者id或名稱
-u userlist 指定真正的使用者id或名稱
-g gid或groupname 指定有效的gid或組名稱
-g gid或groupname 指定真正的gid或組名稱
-p pid 顯示指pid的程序
--ppid pid 顯示屬於pid的子程序
-m 顯示selinux資訊,相當z
psni: nice值
pri: priority 優先順序
psr: processor cpu編號
rtprio: 實時優先順序
示例:ps axo pid,cmd,psr,ni,pri,rtprio
常用組合:
aux-ef-efh
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,commaxo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,co
pgrep
-u 生效使用者
-u 真正發起使用者
-a 顯示完整格式的程序名
-l 顯示程序名
-t terminal:與指定終端相關的程序
-p pid:顯示指定程序的子程序
uptime
顯示當前時間,系統已啟動的時間、當前上線人數,系統平均負載(1、5、10分鐘的平均負載,一般不會超過1)
Linux程序的管理
1.1 多工 多工作業系統就是能同時併發地互動執行郭哥程序的作業系統。在單處理機器上,這會產生多個程序在同時執行的錯覺。在多處理機上,著會使多個程序在不同機器上真正同時,並行地執行。無論在單處理機還是多處理器機器上,多工作業系統都能使多個程序處於堵塞或者睡眠的狀態,也就是說,實際上並沒有被真正的投入...
Linux程序的管理
程序可以理解為程式執行的乙個例項,它包括可執行程式以及與其相關的系統資源,比如開啟的檔案 掛起的訊號 核心內部資料 處理器狀態 記憶體位址空間及包含全域性變數的資料段等。從核心的角度看,程序也可以稱為任務。換句話就是說 程序是系統未完成的工作並且是正在進行的工作 gnomes system moni...
Linux的程序管理
前台程序 前台程序就是具有終端,可以和使用者互動的程序 與前台程序相對,沒有占用終端的就是後台程序 後台程式基本上不和使用者互動,優先順序比前台程序低 將需要執行的命令以 符號結束 守護 daemon 程序是特殊的後台程序 很多守護程序在系統弓 導的時候啟動,一直執行直到系統關閉 linux有很多典...