linux進程樹
『壹』 如何在linux中查看所有正在運行的進程
查看系統所有正在運行的進程,可以輸入命令:
ps aux
-a參數表示不與終端有關的進程也顯示出來。
還有一個和ps命令相似但比它更加直觀的命令是pstree命令,pstree命令是用於列出正在運行的進程的進程樹,所謂進程樹就是不光顯示進程信息,還顯示有關系的進程的相關性,pstree命令的常見用法是:
pstree -Aup
-A參數:表示結果中的進程樹連接用ASCII字元來顯示
-u參數:表示列出進程的所屬用戶
-p參數:表示列出每個進程的PID
ps命令和pstree命令是選取一個時間點的進程狀態,還有一個top命令可以持續檢測進程運行狀態,它顯示的是動態的信息,相當於Windows的任務管理器(不過top命令是命令行),使用方法:
top -d 數字
-d參數後面接一個數字表示幾秒更新一次顯示
『貳』 Linux進程內存如何管理
Linux系統提供了復雜的存儲管理系統,使得進程所能訪問的內存達到4GB。在Linux系統中,進程的4GB內存空間被分為兩個部分——用戶空間與內核空間。用戶空間的地址一般分布為0~3GB(即PAGE_OFFSET,在Ox86中它等於OxC0000000),這樣,剩下的3~4GB為內核空間,用戶進程通常只能訪問用戶空間的虛擬地址,不能訪問內核空間的虛擬地址。用戶進程只有通過系統調用(代表用戶進程在內核態執行)等方式才可以訪問到內核空間。每個進程的用戶空間都是完全獨立、互不相乾的,用戶進程各自有不同的頁表。而內核空間是由內核負責映射,它並不會跟著進程改變,是固定的。內核空間的虛擬地址到物理地址映射是被所有進程共享的,內核的虛擬空間獨立於其他程序。Linux中1GB的內核地址空間又被劃分為物理內存映射區、虛擬內存分配區、高端頁面映射區、專用頁面映射區和系統保留映射區這幾個區域。對於x86系統而言,一般情況下,物理內存映射區最大長度為896MB,系統的物理內存被順序映射在內核空間的這個區域中。當系統物理內存大於896MB時,超過物理內存映射區的那部分內存稱為高端內存(而未超過物理內存映射區的內存通常被稱為常規內存),內核在存取高端內存時必須將它們映射到高端頁面映射區。Linux保留內核空間最頂部FIXADDR_TOP~4GB的區域作為保留區。當系統物理內存超過4GB時,必須使用CPU的擴展分頁(PAE)模式所提供的64位頁目錄項才能存取到4GB以上的物理內存,這需要CPU的支持。加入了PAE功能的Intel Pentium Pro及以後的CPU允許內存最大可配置到64GB,它們具備36位物理地址空間定址能力。由此可見,對於32位的x86而言,在3~4GB之間的內核空間中,從低地址到高地址依次為:物理內存映射區隔離帶vmalloc虛擬內存分配器區隔離帶高端內存映射區專用頁面映射區保留區。
『叄』 linux什麼命令查看程序運行狀態
查看系統所有正在運行的進程,可以用ps aux命令(它的-a參數表示,不與終端有關的進程也顯示出來)。還有一個和ps命令相似的命令是pstree,pstree命令用於列出正在運行的進程的進程樹,所謂進程樹就是顯示有關系的進程的相關性,也就是顯示父子進程之間的關系。pstree命令的常見用法是:pstree -Aup
-A參數表示:顯示出來的進程樹連接,用ASCII字元來顯示
-u參數表示:列出進程的所屬用戶
-p參數表示:列出每個進程的PID
ps命令和pstree命令是選取一個時間點的進程狀態,還有一個top命令可以持續檢測進程運行狀態,它顯示的是動態的信息,有點像Windows的任務管理器(不過top命令是命令行),使用方法:
top -d 數字
-d參數後面接一個數字表示幾秒更新一次顯示,一般可以設置成2,表示2秒一更新。
『肆』 linux下用c語言創建進程樹
有問題Q我吧,QQ: 402892954
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int p,p11,p12,p13,p21,p22;
while ((p=fork())==-1);
if (!p) {
printf("Parent with pid %d, parent pid %d.\n",getpid(),getppid());
while ((p11=fork())==-1);
if (!p11) {
printf("child11 with pid %d, parent pid %d.\n",getpid(),getppid());
while ((p21=fork())==-1);
if (!p21) {
printf("child21 with pid %d, parent pid %d.\n",getpid(),getppid());
exit(0);
}
else
wait(0);
while ((p22=fork())==-1);
if (!p22) {
printf("child22 with pid %d, parent pid %d.\n",getpid(),getppid());
exit(0);
}
else
wait(0);
exit(0);
}
else
wait(0);
while ((p12=fork())==-1);
if (!p12) {
printf("child12 with pid %d, parent pid %d.\n",getpid(),getppid());
exit(0);
}
else
wait(0);
while ((p13=fork())==-1);
if (!p13) {
printf("child13 with pid %d, parent pid %d.\n",getpid(),getppid());
exit(0);
}
else
wait(0);
exit(0);
}
else
wait(0);
return 0;
}
『伍』 構造一個Linux中的進程樹
pstree
『陸』 如何查看Linux進程樹
它能顯示當前運行中進程的相關信息,包括進程的PID。Linux和UNIX都支持ps命令,顯示所有運行中進程的相關信息。ps命令能提供一份當前進程的快照。如果你想狀態可以自動刷新,可以使用top命令
『柒』 linux查看進程命令
linux查看進程命令如下:
操作設備:戴爾筆記本電腦
操作系統:win10
操作程序:xshell軟體
1、首先打開xshell軟體,連接上linux伺服器,使用指令ps查看系統進程,參數a表示全部,u表示以用戶格式顯示,x表示進程參數。
『捌』 Linux下如何顯示指定父進程號的進程樹
用pstree [-acGhlnpuUV][-H <程序識別碼>][<程序識別碼>/<用戶名稱>]
『玖』 Linux啟動run-init: can't execute '/sbin/init'
Linux啟動run-init: can't execute '/sbin/init'如下
當init啟動後,它通過執行各種啟動事務來繼續引導進程(檢查並監視文件系統,啟動後台程序daemons,等等),直至完成用戶所有操作環境的設置工作。這里主要涉及4個程序:init、getty(agetty)、login和shell程序。
init進程的主要任務是根據/etc/rc文件中設置的信息,執行其中設置的命令,然後根據/etc/inittab文件中的信息,為每一個允許登錄的終端設備使用fork()創建一個子進程,並在每個新創建的子進程中運行agetty (getty)程序。而init進程則調用wait(),進入等待子進程結束狀態。每當它的一個子進程結束退出,它就會根據wait()返回的pid號知道是哪個對應終端的子進程結束了,因此就會為相應終端設備再創建一個新的子進程,並在該子進程中重新執行agetty程序。這樣,每個被允許的終端設備都始終有一個對應的進程為其等待處理。
在正常的操作下,init確定agetty正在工作著以允許用戶登錄,並且收取孤立進程。孤立進程是指那些其父輩進程已結束的進程;在Linux中所有的進程必須屬於單棵進程樹,所以孤立進程必須被收取。當系統關閉時,init負責殺死所有其它的進程,卸載所有的文件系統以及停止處理器的工作,以及任何它被配置成要做的工作。