linux進程d
① 發現linux中好多軟體以d結尾,d代表什麼
d 代表 deamon 守護進程
守護進程是運行在Linux伺服器後台的一種服務程序。現在比較常用 是 service 這個詞。
它周期性地執行某種任務或等待處理某些發生的事件。
Linux的大多數服務就是用守護進程實現的。
比如:xinetd 提供網路服務,sshd 提供 ssh登錄服務, vsftpd 提供ftp伺服器, httpd提供Web服務 等等。
② Linux - 進程調度
進程調度演算法也稱 CPU 調度演算法,畢竟進程是由 CPU 調度的。
當 CPU 空閑時,操作系統就選擇內存中的某個「就緒狀態」的進程,並給其分配 CPU。
什麼時候會發生 CPU 調度呢?通常有以下情況:
其中發生在 1 和 4 兩種情況下的調度稱為「非搶占式調度」,2 和 3 兩種情況下發生的調度稱為「搶占式調度」。
非搶占式的意思就是,當進程正在運行時,它就會一直運行,直到該進程完成或發生某個事件而被阻塞時,才會把 CPU 讓給其他進程。
而搶占式調度,顧名思義就是進程正在運行的時候,可以被打斷,使其把 CPU 讓給其他進程。那搶占的原則一般有三種,分別是時間片原則、優先權原則、短作業優先原則。
你可能會好奇為什麼第 3 種情況也會發生 CPU 調度呢?假設有一個進程是處於等待狀態的,但是它的優先順序比較高,如果該進程等待的事件發生了,它就會轉到就緒狀態,一旦它轉到就緒狀態,如果我們的調度演算法是以優先順序來進行調度的,那麼它就會立馬搶占正在運行的進程,所以這個時候就會發生 CPU 調度。
那第 2 種狀態通常是時間片到的情況,因為時間片到了就會發生中斷,於是就會搶占正在運行的進程,從而佔用 CPU。
調度演算法影響的是等待時間(進程在就緒隊列中等待調度的時間總和),而不能影響進程真在使用 CPU 的時間和 I/O 時間。
最簡單的一個調度演算法,就是非搶占式的先來先服務(First Come First Severd, FCFS)演算法了。
顧名思義,先來後到,每次從就緒隊列選擇最先進入隊列的進程,然後一直運行,直到進程退出或被阻塞,才會繼續從隊列中選擇第一個進程接著運行。
這似乎很公平,但是當一個長作業先運行了,那麼後面的短作業等待的時間就會很長,不利於短作業。
FCFS 對長作業有利,適用於 CPU 繁忙型作業的系統,而不適用於 I/O 繁忙型作業的系統。
最短作業優先(Shortest Job First, SJF)調度演算法同樣也是顧名思義,它會優先選擇運行時間最短的進程來運行,這有助於提高系統的吞吐量。
這顯然對長作業不利,很容易造成一種極端現象。
比如,一個長作業在就緒隊列等待運行,而這個就緒隊列有非常多的短作業,那麼就會使得長作業不斷的往後推,周轉時間變長,致使長作業長期不會被運行。
前面的「先來先服務調度演算法」和「最短作業優先調度演算法」都沒有很好的權衡短作業和長作業。
那麼,高響應比優先 (Highest Response Ratio Next, HRRN)調度演算法主要是權衡了短作業和長作業。
每次進行進程調度時,先計算「響應比優先順序」,然後把「響應比優先順序」最高的進程投入運行,「響應比優先順序」的計算公式:
從上面的公式,可以發現:
最古老、最簡單、最公平且使用最廣的演算法就是時間片輪轉(Round Robin, RR)調度演算法。
每個進程被分配一個時間段,稱為時間片(Quantum),即允許該進程在該時間段中運行。
另外,時間片的長度就是一個很關鍵的點:
通常時間片設為 20ms~50ms 通常是一個比較合理的折中值。
前面的「時間片輪轉演算法」做了個假設,即讓所有的進程同等重要,也不偏袒誰,大家的運行時間都一樣。
但是,對於多用戶計算機系統就有不同的看法了,它們希望調度是有優先順序的,即希望調度程序能從就緒隊列中選擇最高優先順序的進程進行運行,這稱為最高優先順序(Highest Priority First,HPF)調度演算法。
進程的優先順序可以分為,靜態優先順序或動態優先順序:
該演算法也有兩種處理優先順序高的方法,非搶占式和搶占式:
但是依然有缺點,可能會導致低優先順序的進程永遠不會運行。
多級反饋隊列(Multilevel Feedback Queue)調度演算法是「時間片輪轉演算法」和「最高優先順序演算法」的綜合和發展。
顧名思義:
工作原理:
設置了多個隊列,賦予每個隊列不同的優先順序,每個隊列優先順序從高到低,同時優先順序越高時間片越短;
新的進程會被放入到第一級隊列的末尾,按先來先服務的原則排隊等待被調度,如果在第一級隊列規定的時間片沒運行完成,則將其轉入到第二級隊列的末尾,以此類推,直至完成;
當較高優先順序的隊列為空,才調度較低優先順序的隊列中的進程運行。如果進程運行時,有新進程進入較高優先順序的隊列,則停止當前運行的進程並將其移入到原隊列末尾,接著讓較高優先順序的進程運行;
可以發現,對於短作業可能可以在第一級隊列很快被處理完。對於長作業,如果在第一級隊列處理不完,可以移入下次隊列等待被執行,雖然等待的時間變長了,但是運行時間也會更長了,所以該演算法很好的兼顧了長短作業,同時有較好的響應時間。
整體架構如下,即調度策略是模塊化設計的,調度器根據不同的進程依次遍歷不同的調度策略,找到進程對應的調度策略,調度的結果即為選出一個可運行的進程指針,並將其加入到進程可運行隊列中。
以一棵紅黑樹管理所有需要調度的進程,
紅黑樹,左邊節點小於右邊節點的值,運行到目前為止vruntime最小的進程,同時考慮了CPU/IO和nice,總是找vruntime最小的線程調度。
vruntime = pruntime/weight × 1024;
vruntime是虛擬運行時間,pruntime是物理運行時間,weight權重由nice值決定(nice越低權重越高),則運行時間少、nice值低的的線程vruntime小,將得到優先調度。這是一個隨運行而動態變化的過程。
③ linux怎麼查詢進程和進程的id
用top -u 命令查看進程以及PID。
命令如下:
$ top -u
PID — 進程id
USER — 進程所有者
PR — 進程優先順序
NI — nice值。負值表示高優先順序,正值表示低優先順序
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
%CPU — 上次更新到現在的CPU時間佔用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)
④ linux下 top中的d怎麼半
在linux下可以通過top命令來查系統運行狀態和進程運行狀態,通過man查看top手冊,top的解釋是display Linux tasks,以前看到過一個另外的解釋display top CPU processes,這個我覺得挺貼切的,因為top這個命令會自動把消耗高的進慎迅遲程排到前面,真的很形象。
1、命令說明
top 參數
-h:help表示顯示幫助的意思
-v:version顯示版本的意思,和-h的功能一樣
-u:user顯示指定用戶的進程,例如:top -u root
-p:pid顯示指定進程,例如:top -p 1
-n:number進入top後,top會定時刷新狀態,這個值就是設置刷新幾次
-d:delay進入top後,top會定時刷新狀態,這個值就是設置幾秒刷新一次
-b:Batch mode,top刷新狀態默認是在原數據上刷新,使用這個參數後,會一屏一屏的顯示數據。結合重定向功能和計劃任務,這個參數在記錄伺服器運行狀態時非常有用。
以上一些參數是在輸入命令時提供的參數,在top運行的過程中,還可以輸入一些快捷鍵來調整顯示內容。
一些命令運行時的快捷鍵說明:
q:quit退出程序
M:Memory按照內存使用量排序
P:CPU按照cpu使用量排序
k:kill殺死PID的進程,不輸入PID,直接按回車就會退出
1:能顯示CPU每個核心的情況
h或者?:help 查看更多快捷鍵
f:fields查看進程表頭欄位含義
2、命令測試
top
top命令測試
第一行說明:
top – :系統當前時間
up:伺服器連續運行的時間,筆者見過有伺服器連續運行一年以上,linux伺服器還是非常穩定的。
user:當前有多少用戶登錄系統
load average:這個邊有3個數值分別表示系統在前1分鍾,5分鍾,15分鍾的工作負載,根據筆者以往的經驗來看單核負載在3-5之間比較合適,經常在1以下,說明cpu利用率不高,在5以上,cpu會處於較高負載狀態,會容易宕機。有一次項目上線,晚上加班觀察伺服器狀況,這個值長時間保持在72左右,因為伺服器有八核,所以每核的值為9,後來伺服器就掛了。
第二行就是顯示任務的數量情況,其中zombie要注意一下,這個是表示僵屍進程,出現了僵屍進程要注意下僵屍進程是如何產生的。如果不找到產生原因,即使殺死了,可能也會再次出現。
第三行表示cpu的運行情況,按下1可以顯示每個核的運行情況。
第四行表示內存memory的使用情況。
第五行表示交換空間swap的使用情況。
下面顯示的就是進程的運行狀態了。每個表頭表示的含義如下:
PID:進程編號
USER:進程所屬用戶
PR/NI:Priority/Nice value進程執行的優先順序
VIRT:Virtual Image (kb) 虛擬內存使用總額
RES:Resident size (kb) 常駐內存
SHR:Shared Mem size (kb) 共享內存
S:Process Status 進程狀態
%CPU:cpu使用率
%MEM:內存使用率
TIME+:進程開始運行時使用cpu的總時間
COMMAND:進程運行的命令
在top狀態下按f可以查看錶頭欄位說明。
3、常用的命令:
top -b -n 60 -d 60 > /home/cpu.txt
該命令每隔60秒會將伺服器運行狀寬李態保存到一個文本文件,昌好共運行60次,其實就是將伺服器1個小時的運行狀態保存起來。使用這個命令,可以記錄伺服器在繁忙時的負載情況,例如設置到晚上8點到9點之間,這樣就可以根據伺服器狀態作出調整,而不是等伺服器掛了才來處理。上面命令各參數,大家可以根據自己需要修改。終於不用加班蹲點觀察伺服器了。
⑤ 簡述Linux系統中的進程分為哪兩類分別以什麼方式啟動
分為獨立進程和非獨立進程。
一般情況下,在/etc/init.d這個目錄中看到腳本都是獨立進程的腳本,可以使用server 腳本名 start 來啟動,
在/etc/xinetd.d目錄中存放的都是非獨立進程,可以使用以下兩個命令啟動
chkconfig 非獨立進程名 on
service xinetd restart
⑥ Linux怎樣查詢出當前系統的所有進程
使用ps命令
常用參手敏告數:
-A 顯示所有進程(等價於-e)(utility)
-a 顯示一個終端的所有進程,除了會話引線
-N 忽略選擇。
-d 顯示所有進程,但省略所有的會話引線(utility)
-x 顯示沒有控制終端的進程,同時顯示各個命令的具體路徑。dx不可合用。(utility)
-p pid 進程使用cpu的時間
-u uid or username 選擇有效的用戶id或者是用戶名
-g gid or groupname 顯示組的所有進程。
U username 顯示該用戶下的所有進程,且顯示各個命令的詳細路徑。如:ps U zhang;(utility)
-f 全部列出,通常和其他選項聯用。如:ps -fa or ps -fx and so on.
-l 長格式(有F,wchan,C 等欄位)
-j 作業格式
-o 用戶自定義格式。
v 以虛擬存儲器格式顯示
s 以信號格式顯示
-m 顯示所有的線程
-H 顯示進程的層次(和其它的命令合用,如:ps -Ha)(utility)
e 命令之後顯示環境(如:ps -d e; ps -a e)(utility)
h 不顯示第一行
ps命令常用用法:
1)ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
2)ps -A 顯示所有進程。
3)ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
4)ps -e 此參數的效果和指定"A"參數相同。
5)ps e 列出程序時,顯示每個程序所使用的環境變數。畢明
6)ps f 用ASCII字元顯示樹狀結構,表達程序間的相互關系。
7)ps -H 顯示樹狀結構,表示程序間的相互關系。
8)ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
9)ps s 採用程序信號的格式顯示程序狀況。
10)ps S 列出程序時,包括已中斷的子程序資料。
11)ps -t<終端機編號> 指定終端機拿慧編號,並列出屬於該終端機的程序的狀況。
12)ps u 以用戶為主的格式來顯示程序狀況。
13)ps x 顯示所有程序,不以終端機來區分。
最常用的方法是ps -aux或ps -ef,然後再利用一個管道符號導向到grep去查找特定的進程,然後再對特定的進程進行操作。
⑦ linux 下查看進程用什麼命令
linux 下查看進程可以使用的命令:
1、ps命令查找與進程相關的PID號:
2、ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
3、ps -A 顯示所有程序。
4、ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
5、ps -e 此參數的效果和指定"A"參數相同。
6、ps e 列出程序時,顯示每個程序所使用的環境變數。
7、ps f 用ASCII字元顯示樹狀結構,表達程序間的相互關系。
8、ps -H 顯示樹狀結構,表示程序間的相互關系。
9、ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
10、ps s 採用程序信號的格式顯示程序狀況。
11、ps S 列出程序時,包括已中斷的子程序資料。
12、ps -t<終端機編號> 指定終端機編號,並列出屬於該終端機的程序的狀況。
13、ps u 以用戶為主的格式來顯示程序狀況。
14、ps x 顯示所有程序,不以終端機來區分。
⑧ linux下mysqld 進程關不掉
是哪個版本的linux?把開數盯機啟動中mysql的啟動項移除即可
假如是ubuntu,絕核那並畢掘么直接把/etc/init.d/mysql移動到其它文件夾中,重啟系統
⑨ 為什麼中linux中各種服務都帶一個d呢例如:mysql (mysqld)
d是服務端進程,d是daemon的縮寫,是守護進程,它在後台運行。
⑩ linux裡面有很多以 .d 結尾的目錄,d 代表什麼意思daemon or dir
linux裡面有襪困很多以 .d 結尾的目錄,.d是表示directory,目錄的意思。
滾好鎮在Linux系統中通常為了保持對原有配置方式的兼容,而增加的.d結尾目錄,如: /etc/X11/xorg.conf 這原本是個文件,現在也有了一個/etc/X11/xorg.conf.d這樣的目錄,顯卡驅動的相關設置原本是放在/etc/X11/xorg.conf這個文件中的,現在為了配置大粗文件的簡潔和靈活性,可以將配置按照情況分配,放到/etc/X11/xorg.conf.d中,像「規則」一樣的方式來添加,系統會自動去這個/etc/X11/xorg.conf.d裡面去找這些規則並按照規則進行設置。這樣可以保持之前相對於之前的/etc/X11/xorg.conf方法的兼容性。