linux系統進程
① linux進程一般可以分為哪三類
進程是正在執行的一個程序或命令,每個進程都是一個運行的實體,都有自己的地址空間,並佔用一定的系統資源。程序一旦運行就是進程。
進程可以看成程序執行的一個實例。進程是系統資源分配的獨立實體,每個進程都擁有獨立的地址空間。一個進程無法訪問另一個進程的變數和數據結構,如果想讓一個進程訪問另一個進程的資源,需要使用進程間通信,比如管道,文件,套接字等。
Linux中進程分為以下三類:
①交互進程:由一個shell啟動的進程,交互進程既可以在前台運行,也可以在後台運行。
②批處理進程:這種進程和終端沒有聯系,是一個進程序列。
③監控進程:也稱守護進程,是一個在後台運行且不受任何終端控制的特殊進程,用於執行特定的系統任務。
進程的狀態:
①可運行狀態:此時進程正在運行或者正在運行隊列中等待准備運行。
②等待狀態:此時進程在等待一個事件的發生或某種系統資源。在Linux系統中等待狀態又細分為兩種等待狀態:可中斷的等待狀態和不可中斷的等待狀態。
③暫停狀態:處於暫停狀態的進程被暫停運行。
④僵死狀態:每個進程在運行結束後都會處於僵死狀態,等待父進程調用進而釋放系統資源,處於該狀態的進程已經運行結束,但是它的父進程還沒有釋放其系統資源。
② Linux進程
什麼是進程 ?
狹義上來說 : 進程是操作系統上運行的一個程序 。
廣義上來說 : 進程是一個具有一定獨立功能的程序關於某個數據集合的一次運行活動。它是 操作系統 動態執行的 基本單元 ,在傳統的 操作系統 中,進程既是基本的 分配單元 ,也是基本的執行單元。
進程式控制制是進程管理中最基本的功能。它用於創建一個新進程,終止一個已完成的進程,或者去終止一個因出現某事件而使其無法運行下去的進程,還可負責進程運行中的狀態轉換。
Linux系統上進程的幾種狀態:
進程的創建一是操作系統來創建 。 二是由父進程創建 。
什麼是守護進程? 這是一段來自維基網路的描述。
exit()與_ecit()的區別
exit與return的區別
exit 的參數 , 正常退出參數為 0, 異常退出參數為非零值 。
③ linux如何打開進程式控制制塊
linux如何打開進程式控制制塊[linux內核]4.進程式控制制塊和進程創建纖盯_H4ppyD0g的博客-CSDN博客
進程式控制制塊PCB的定義位置在/linux3.18.6/include/linux/sched.h#1234, 起名為 struct task_struct 下圖為進程結構體示意圖 1.1 進程狀態信息 在PCB中的變數定義:volatile long state;操作系統...
CSDN技術社區2021-11-23
Linux PCB(進程式控制制塊)詳解_BadSleepC的博客-CSDN博客_linux pcb
可中斷的等待狀態 不可中斷的等待狀態 處於這種狀態的進程,要麼正在運行、要麼正准備運行。正在運行的進程就是當前進程(由current所指向的進程)...
CSDN技術社區2022-03-14
Linux下的進程式控制制塊(PCB)碼農教程
本文章向大家介紹Linux下的進程式控制制塊(PCB),主要包括Linux下的進程式控制制塊(PCB)使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。
碼農網2020-06-01
其他人還搜了
linux殺進程
linux查看進程命令
linux如何kill進程
linux進程間通信
linux進程式控制制塊pcb01
什麼叫進程式控制制塊
linux查看進程佔用內存
linux進程式控制制塊數據結構
2021-04-10 Linux系統下通過內核模塊顯示進程式控制制塊信息_ONEIROPLUS的博客-CSDN博客
Linux系統下通過內核模塊顯示進程式控制制塊信息 前言 本機為微軟 Surface pro4,為 64 位,所用操作系統為 Windos 10。本機虛擬機版本為 Oracle VM VirtualBox 6.1.8,所用操作系統是使用 Ubuntu18...
CSDN技術社區2021-04-10
【Linux】進李豎纖程式控制制(詳細解析)SouLinya的博客-CSDN博客
進程調用fork函數,當控制轉移到內核中的fork代碼後,內核做: 分配新的內存塊和內核數據結構(主要有:鏈表、隊列、映射和紅黑樹。給子進程 將父進程部分數據結構內容拷貝至子進程 將子進程...
CSDN技術社區2022-12-10
Linux進程式控制制-碼農教程
在Linux中,每個進程在創建時都會被分配一個數據結構,稱為進程式控制制塊(PCB,Process Control Block),描述進程的運動變化過程,與進程是一一對應的關系。通常PCB包含以下信息: 進程標識符:每個...
碼農網2022-07-22
linux進程式控制制與管理命令_進程式控制制塊的內容-Java架構師必看
進程調用fork,當控制轉移到內核中的fork代碼後,內核做: 分配新的內存塊和內核數據結構給子進程。將父進程部分數據結構內容拷貝至子進程。添加子進程到系統進程列表當中。fork返回,開始調度...
Java架構師必看2022-08-08
Linux系哪仿統中的進程式控制制塊.doc-淘豆網
在linux 中每一個進程都由task_struct 數據結構來定義.task_struct就是我們通常所說的PCB.她是對進程式控制制的唯一手段也是最有效的手段.當我們調用fork()時,系統會為我們產生一個task_struct結構...
淘豆網
linux系統中的進程式控制制塊.doc-螞蟻文庫
在LINUX中每一個進程都由TASK_STRUCT數據結構來定義TASK_STRUCT就是我們通常所說的PCB她是對進程式控制制的唯一手段也是最有效的手段當我們調用FORK時,系統會為我們產生一個TASK_STRUCT結構。然後從...
螞蟻文庫
Linux下進程描述(1)—進程式控制制塊【轉】阿里雲開發者社區
每個進程在內核中都有⼀個進程式控制制塊(PCB)來維護進程相關的信息,Linux內核的 進程式控制制塊是task_struct結構體。現在我們全⾯了解⼀下其中都有哪些信息。在Linux中,這個結構叫做task_struct。...
阿里雲開發者社區2017-12-27
相關搜索
linux查詢進程
linux殺死進程命令
什麼是進程式控制制塊
linux進程式控制制塊pcb02
linux進程式控制制塊的結構體
linux中新程序如何開啟進程
linux如何殺死進程
linux殺死進程
linux如何關閉進程
linux系統查看所有進程命令
④ linux如何查看歷史進程結束時間
1.
打開linux系統,在linux的桌面的空白處右擊。
2.
在彈出的下拉選項里,點擊打開終端。
3.
輸入export HISTTIMEFORMAT='%F %T命令並執行。
4.
再使用history命令,回車即可查看歷史命令的時間。
⑤ Linux進程詳解
ps是Linux 中最基礎的瀏覽系統中的進程的命令。能列出系統中運行的進程,包括進程號、命令、CPU使用量、內存使用量等。接下來解讀一下Linux操作系統的進程和Windows「Ctrl+Alt+delete」直接的差異。
在進行了解進程命令之前需要知道進程的一些狀態
ps工具標識進程的5種狀態碼:
Linux操作系統進程執行的狀態轉換圖如圖所示:
下面來看一下 ps命令
ps --help命令可以查看ps命令的使用說明
或者使用 man ps命令 查詢ps的詳細說明
在 man手冊 關於ps的解讀中,總結了一下幾個參數的含義:
以上的參數是可以拼接使用的,那就了解一些常用的參數組合
ps aux命令
ps -ef命令
查看進程狀態這兩個是命令是最常用的,使用 ps aux 可以查看進程的詳細運行狀態等。使用 ps -ef 不僅可以顯示自身的PID,也可以顯示PPID(父進程)。但是顯示不了進程的運行狀態
top命令
top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器
man手冊關於top的解釋
關閉進程,重啟進程
在上一片文章中 linux的目錄結構 裡面說過,在目錄/etc/init.d/目錄下包含許多系統各種服務的啟動和停止腳本。假設進程佔用內存較大或者進程異常,我們是重啟這個進程restart。如下圖所示:
我們重啟了mysqld這個進程,可以看出進程號已經改變(從15743到15964),說明進程已經重啟。
Linux下有3個特殊的進程,idle進程(PID=0), init進程(PID=1)和kthreadd(PID=2)
我們來看一下進程狀態[下面是刪減版,進程數量太多,列舉一部分]
可以看到很多進程的PPID號是1和2。也就是init進程和kthreadd進程。
在使用Windows系統的過程中,都碰到過應用程序卡死的情況。應對此問題,我們一般都是等待失去響應的程序恢復,或者是直接使用任務管理器將其強制關閉,然後再重新打開。
在Linux中,遇到特別耗費資源的進程,當然需要使用 top命令 查看進程佔用率高的進程。或者使用 free -m命令 查看內存剩餘。假設需要強殺進程來釋放空間。我們涉及到Linux中信號📶的知識,在這里簡單的描述一下,信號的詳解會在接下來的文章裡面敘述。
free -m命令查看內存空間
在linux中存在著64種信號
使用 kill -l命令 查看信號列表
在前面說過進程會被這些個信號> (進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號強制停止運行) 那問題就在於如何發信號給這些個進程。
使用kill命令發信號
我們從上面可以看到 mysqld進程被重啟了 。
關於Linux的這一塊進程的知識還有很多,後面的文章跟大家分享僵屍進程,孤兒進程等等知識,以及守護進程(daemon進程).