計算機操作系統基礎(五)---Linux的進程管理

引言

本文爲第五篇,Linux的進程管理,本文主要介紹Linux進程的相關概念、操作Linux進程的相關命令等。

一、Linux進程的相關概念

1、進程的類型

(1)前臺進程

前臺進程就是具有終端,可以和用戶進行交互的進程

下邊寫了一個死循環計算圓周率的程序

然後將程序跑起來,雖然程序沒有輸入任何東西,它卻佔了整個終端shell,此時輸入任何命令都是沒有用的,這個進程就是一個前臺進程

現在改一下剛纔的代碼,讓它不斷的打印hello world

此時運行代碼,它會死循環的輸出hello world,這個就是一個有輸出的前臺進程,這個有輸出的前臺進程輸出的內容佔滿了整個終端shell,即使輸入任何的命令都是不管用的,因爲這個前臺進程佔用了終端shell

(2)後臺進程

  • 與前臺進程相對,沒有佔用終端的就是後臺進程
  • 後臺進程基本上不和用戶進行交互,優先級比前臺進程(因爲前臺進程要與用戶進行交互,因此必須在響應速度或者在別的地方要跟得上,使得與用戶交互時更加順暢)
  • 後臺進程我們一般是使用&符號結束,這樣就可以啓動一個後臺進程

舉例:
現在將前邊的代碼改一下,讓它每5秒輸出一個hello world,然後以後臺進程的方式讓它跑起來

此時可以看見,我們以後臺進程的方式將它跑起來的時候,它會輸出一個進程ID,而且,這個後臺進程是不佔用shell的,雖然它的內容會打印到終端上,但是我們還是可以正常的使用命令的,同時,我們如果使用Ctrl+C,也是不會將這個後臺進程停止的。

(3)守護進程

  • 守護進程(daemon)是特殊的後臺進程
  • 很多守護進程在系統引導的時候啓動,一直運行,直到系統關閉
  • Linux有很多典型的守護進程

比如crond,這個就是Linux中定時任務守護進程、httpd是Linux中http服務的守護進程、sshd是平時我們使用ssh登錄時候的守護進程、mysqld是數據庫的守護進程(進程名字以d結尾的一般都是守護進程)

2、進程的標記

(1)進程ID

  • 進程的ID是進程的唯一標記,每個進程擁有不同的ID
  • 進程ID表現爲一個非負的整數,最大值由操作系統限定
  • 我們使用top命令就可以查看Linux中的所有進程,最左側的PID列就是進程的ID

操作系統提供了fork()函數來創建進程,所以就可能出現下邊這種情況

上邊就是進程的層級關係,這中層級關係稱之爲父子進程關係。進程A通過fork函數創建了進程B,因此進程A是進程B的父進程。進程的父子關係,可以通過pstree命令查看

介紹幾個特殊的進程

ID爲0的進程爲idle進程,是系統創建的第一個進程

ID爲1的進程爲init進程,是0號進程的子進程,負責完成系統的初始化(init進程是所有用戶進程的祖先進程)

(2)進程的狀態標記

在Linux中,可以使用man ps命令來了解各種進程狀態的標記,這裏只挑幾個比較重要的進行介紹

現在將剛纔上邊寫的死循環計算圓周率的代碼以後臺進程的方式跑起來,並且將一個死循sleep的代碼也以後臺進程的方式跑起來,然後看一下這兩個進程的狀態標記

此時兩個進程分別處於運行狀態睡眠狀態

二、操作Linux進程的相關命令

ps命令(主要是用來查看進程)

top命令(主要是查看Linux進程的使用內存或者是一些別的狀態)

kill命令(主要是用來給進程發送信號的)

1、ps命令

(1)列出當前進程:ps

(2)查看進程詳細信息:ps -aux

(3)查看指定用戶進程:ps -u username
查看所有root用戶的進程:ps -u root

(4)查看指定進程:ps -aux|grep 指定進程信息

(5)查看進程樹(查看進程的父子關係):ps -ef --forest

(6)將進程按使用cpu的頻率來進行排序:ps -aux --sort=pcpu

(7)將進程按使用內存的大小來進行排序:ps -aux --sort=pmem

2、top命令
(1)查看所有進程的狀態:top

(PR是進程的優先級、VIRT是進程的虛擬內存、TIME+是進程運行的時間、COMMAND是進程的命令)

3、kill命令

(1)給指定進程發信號:kill -信號 進程ID

給指定進程ID發送9這個信號:kill -9 23

9這個信號表示無條件的終止這個進程,更多的信號,可以使用kill -l進程查看

在快速變化的技術中尋找不變,纔是一個技術人的核心競爭力。知行合一,理論結合實踐

站在了巨人的肩膀上學習,向前輩致敬

參考:https://coding.imooc.com/class/355.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章