欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux進(jìn)程管理方法介紹

 更新時間:2022年06月01日 10:12:48   作者:springsnow  
這篇文章介紹了Linux進(jìn)程管理的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、簡介

當(dāng)我們運行程序時,Linux會為程序創(chuàng)建一個特殊的環(huán)境,該環(huán)境包含程序運行需要的所有資源,以保證程序能夠獨立運行,不受其他程序的干擾。這個特殊的環(huán)境就稱為進(jìn)程。每個 Linux 命令都與系統(tǒng)中的程序?qū)?yīng),輸入命令,Linux 就會創(chuàng)建一個新的進(jìn)程。例如使用 ls 命令遍歷目錄中的文件時,就創(chuàng)建了一個進(jìn)程。簡而言之,進(jìn)程就是程序的實例。 
系統(tǒng)通過一個五位數(shù)字跟蹤程序的運行狀態(tài),這個數(shù)字稱為 pid 或進(jìn)程ID。每個進(jìn)程都擁有唯一的 pid。 
理論上,五位數(shù)字是有限的,當(dāng)數(shù)字被用完時,下一個 pid 就會重新開始,所以 pid 最終會重復(fù)。但是,兩個 pid 一樣的進(jìn)程不能同時存在,因為Linux會使用 pid 來跟蹤程序的運行狀態(tài)。

二、創(chuàng)建進(jìn)程

有兩種方式來創(chuàng)建進(jìn)程:前臺進(jìn)程后臺進(jìn)程。

1、前臺進(jìn)程

默認(rèn)情況下,用戶創(chuàng)建的進(jìn)程都是前臺進(jìn)程;前臺進(jìn)程從鍵盤讀取數(shù)據(jù),并把處理結(jié)果輸出到顯示器。 
我們可以看到前臺進(jìn)程的運行過程。例如,使用 ls 命令來遍歷當(dāng)前目錄下的文件:

$ls ch*.doc
ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc
ch04-1.doc   ch040.doc  ch05.doc

這個程序就運行在前臺,它會直接把結(jié)果輸出到顯示器。如果 ls 命令需要數(shù)據(jù)(實際上不需要),那么它會等待用戶從鍵盤輸入。

當(dāng)程序運行在前臺時,由于命令提示符($)還未出現(xiàn),用戶不能輸入其他命令;即使程序需要運行很長時間,也必須等待程序運行結(jié)束才能輸入其他命令。

2、后臺進(jìn)程

后臺進(jìn)程與鍵盤沒有必然的關(guān)系。當(dāng)然,后臺進(jìn)程也可能會等待鍵盤輸入。 
后臺進(jìn)程的優(yōu)點不必等待程序運行結(jié)束就可以輸入其他命令。 
創(chuàng)建后臺進(jìn)程最簡單的方式就是在命令的末尾加 &,例如:

$ls ch*.doc &
ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc

如果 ls 命令需要輸入(實際上不需要),那么它會暫停,直到用戶把它調(diào)到前臺并從鍵盤輸入數(shù)據(jù)才會繼續(xù)運行。

三、查看正在運行的進(jìn)程

可以使用 ps 命令查看進(jìn)程的運行狀態(tài),包括后臺進(jìn)程,例如:

$ps
PID       TTY      TIME        CMD
18358     ttyp3    00:00:00    sh
18361     ttyp3    00:01:31    abiword
18789     ttyp3    00:00:00    ps

還可以結(jié)合 -f 選項查看更多信息,f 是 full 的縮寫,例如:

$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f

每列的含義如下:

  • UID:進(jìn)程所屬用戶的ID,即哪個用戶創(chuàng)建了該進(jìn)程。
  • PID:進(jìn)程ID。
  • PPID:父進(jìn)程ID,創(chuàng)建該進(jìn)程的進(jìn)程稱為父進(jìn)程。
  • C:CPU使用率。
  • STIME:進(jìn)程被創(chuàng)建的時間。
  • TTY:與進(jìn)程有關(guān)的終端類型。
  • TIME:進(jìn)程所使用的CPU時間。
  • CMD:創(chuàng)建該進(jìn)程的命令。

ps 命令還有其他一些選項:

  • -a:顯示所有用戶的所有進(jìn)程。
  • -x:顯示無終端的進(jìn)程。
  • -u:顯示更多信息,類似于 -f 選項。
  • -e:顯示所有進(jìn)程。

四、終止進(jìn)程

當(dāng)進(jìn)程運行在前臺時,可以通過 kill 命令或 Ctrl+C 組合鍵來結(jié)束進(jìn)程。 
如果進(jìn)程運行在后臺,那么首先要通過 ps 命令來獲取進(jìn)程ID,然后使用 kill 命令“殺死”進(jìn)程,例如:

$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f
$kill 6738
Terminated

如上所示,kill 命令終結(jié)了 first_one 進(jìn)程。

如果進(jìn)程忽略 kill 命令,那么可以通過 kill -9 來結(jié)束:

$kill -9 6738
Terminated

1.命令格式

kill[參數(shù)][進(jìn)程號]

2.命令功能

發(fā)送指定的信號到相應(yīng)進(jìn)程。不指定型號將發(fā)送SIGTERM(15)終止指定進(jìn)程。如果任無法終止該程序可用“-KILL” 參數(shù),其發(fā)送的信號為SIGKILL(9) ,將強制結(jié)束進(jìn)程,使用ps命令或者jobs 命令可以查看進(jìn)程號。root用戶將影響用戶的進(jìn)程,非root用戶只能影響自己的進(jìn)程。

3.命令參數(shù):

  • -l 信號,若果不加信號的編號參數(shù),則使用“-l”參數(shù)會列出全部的信號名稱
  • -a 當(dāng)處理當(dāng)前進(jìn)程時,不限制命令名和進(jìn)程號的對應(yīng)關(guān)系
  • -p 指定kill 命令只打印相關(guān)進(jìn)程的進(jìn)程號,而不發(fā)送任何信號
  • -s 指定發(fā)送信號
  • -u 指定用戶

注意:

  • kill命令可以帶信號號碼選項,也可以不帶。如果沒有信號號碼,kill命令就會發(fā)出終止信號(15),這個信號可以被進(jìn)程捕獲,使得進(jìn)程在退出之前可以清理并釋放資源。也可以用kill向進(jìn)程發(fā)送特定的信號。例如: 
    kill -2 123 
    它的效果等同于在前臺運行PID為123的進(jìn)程時按下Ctrl+C鍵。但是,普通用戶只能使用不帶signal參數(shù)的kill命令或最多使用-9信號。
  • kill可以帶有進(jìn)程ID號作為參數(shù)。當(dāng)用kill向這些進(jìn)程發(fā)送信號時,必須是這些進(jìn)程的主人。如果試圖撤銷一個沒有權(quán)限撤銷的進(jìn)程或撤銷一個不存在的進(jìn)程,就會得到一個錯誤信息。
  • 可以向多個進(jìn)程發(fā)信號或終止它們。
  • 當(dāng)kill成功地發(fā)送了信號后,shell會在屏幕上顯示出進(jìn)程的終止信息。有時這個信息不會馬上顯示,只有當(dāng)按下Enter鍵使shell的命令提示符再次出現(xiàn)時,才會顯示出來。
  • 應(yīng)注意,信號使進(jìn)程強行終止,這常會帶來一些副作用,如數(shù)據(jù)丟失或者終端無法恢復(fù)到正常狀態(tài)。發(fā)送信號時必須小心,只有在萬不得已時,才用kill信號(9),因為進(jìn)程不能首先捕獲它。要撤銷所有的后臺作業(yè),可以輸入kill 0。因為有些在后臺運行的命令會啟動多個進(jìn)程,跟蹤并找到所有要殺掉的進(jìn)程的PID是件很麻煩的事。這時,使用kill 0來終止所有由當(dāng)前shell啟動的進(jìn)程,是個有效的方法。

信號說明

只有第9種信號(SIGKILL)才可以無條件終止進(jìn)程,其他信號進(jìn)程都有權(quán)利忽略。 下面是常用的信號:

  • HUP 1 終端斷線
  • INT 2 中斷(同 Ctrl + C)
  • QUIT 3 退出(同 Ctrl + \)
  • TERM 15 終止
  • KILL 9 強制終止
  • CONT 18 繼續(xù)(與STOP相反, fg/bg命令)
  • STOP 19 暫停(同 Ctrl + Z)

五、父進(jìn)程和子進(jìn)程

每個 Linux 進(jìn)程會包含兩個進(jìn)程ID:當(dāng)前進(jìn)程ID(pid)和父進(jìn)程ID(ppid)。可以暫時認(rèn)為所有的進(jìn)程都有父進(jìn)程。 
由用戶運行的大部分命令都將 Shell 作為父進(jìn)程,使用 ps -f 命令可以查看當(dāng)前進(jìn)程ID和父進(jìn)程ID。

六、僵尸進(jìn)程和孤兒進(jìn)程

正常情況下,子進(jìn)程被終止時會通過 SIGCHLD 信號通知父進(jìn)程,父進(jìn)程可以做一些清理工作或者重新啟動一個新的進(jìn)程。但在某些情況下,父進(jìn)程會在子進(jìn)程之前被終止,那么這些子進(jìn)程就沒有了“父親”,被稱為孤兒進(jìn)程。 
init 進(jìn)程會成為所有孤兒進(jìn)程的父進(jìn)程。init 的 pid 為1,是Linux系統(tǒng)的第一個進(jìn)程,也是所有進(jìn)程的父進(jìn)程。 
如果一個進(jìn)程被終止了,但是使用 ps 命令仍然可以查看該進(jìn)程,并且狀態(tài)為 Z,那么這就是一個僵尸進(jìn)程。僵尸進(jìn)程雖然被終止了,但是仍然存在于進(jìn)程列表中。一般僵尸進(jìn)程很難殺掉,你可以先殺死他們的父進(jìn)程,讓他們變成孤兒進(jìn)程,init 進(jìn)程會自動清理僵尸進(jìn)程。

七、常駐進(jìn)程

常駐進(jìn)程一般是系統(tǒng)級進(jìn)程,以 root 權(quán)限運行在后臺,可以處理其他進(jìn)程的請求。 
常駐進(jìn)程沒有終端,不能訪問 /dev/tty 文件,如果使用 ps -ef 查看該進(jìn)程,tty 這一列會顯示問號(?)。 
更確切地說,常駐進(jìn)程通常運行在后臺,等待指定事件發(fā)生,例如打印進(jìn)程是一個常駐進(jìn)程,它會等待用戶輸入打印相關(guān)的命令并進(jìn)行處理。

八、top命令

top 命令是一個很有用的工具,它可以動態(tài)顯示正在運行的進(jìn)程,還可以按照指定條件對進(jìn)程進(jìn)行排序,與Windows的任務(wù)管理器類似。 
top 命令可以顯示進(jìn)程的很多信息,包括物理內(nèi)存、虛擬內(nèi)存、CPU使用率、平均負(fù)載以及繁忙的進(jìn)程等。例如:

$top

九、任務(wù)和進(jìn)程

任務(wù)(task)是最抽象的,是一個一般性的術(shù)語,指由軟件完成的一個活動。一個任務(wù)既可以是一個進(jìn)程,也可以是多個進(jìn)程。簡而言之,它指的是一系列共同達(dá)到某一目的的操作。例如,讀取數(shù)據(jù)并將數(shù)據(jù)放入內(nèi)存中。這個任務(wù)可以由一個進(jìn)程來實現(xiàn),也可以由多個進(jìn)程來實現(xiàn)。 每個任務(wù)都有一個數(shù)字表示的任務(wù)號。

進(jìn)程(process)常常被定義為程序的執(zhí)行??梢园岩粋€進(jìn)程看成是一個獨立的程序,在內(nèi)存中有其完備的數(shù)據(jù)空間和代碼空間。一個進(jìn)程所擁有的數(shù)據(jù)和變量只屬于它自己。

jobs 命令可以用來查看系統(tǒng)中正在運行的任務(wù),包括后臺運行的任務(wù)。該命令可以顯示任務(wù)號及其對應(yīng)的進(jìn)程ID。一個任務(wù)可以對應(yīng)于一個或者多個進(jìn)程號。 
jobs 命令的 -l 選項可以查看當(dāng)前任務(wù)包含的進(jìn)程ID:

$jobs -l
[1] + 1903 running                 ls ch*.doc &
$

其中,第一列表示任務(wù)號,第二列表示任務(wù)對應(yīng)的進(jìn)程ID,第三列表示任務(wù)的運行狀態(tài),第四列表示啟動任務(wù)的命令。

十、前臺任務(wù)和后臺任務(wù)的切換

1、fg 命令可以將后臺任務(wù)調(diào)到前臺,語法為:

$fg %jobnumber

jobnumber 是通過 jobs 命令獲取的后臺任務(wù)的的序號,注意不是pid。如果后臺只有一個任務(wù),可以不指定 jobnumber。

2、bg 命令可以將后臺暫停的任務(wù),調(diào)到前臺繼續(xù)運行,語法為:

$bg %jobnumber

jobnumber 同樣是通過 jobs 命令獲取的后臺任務(wù)的的序號,注意不是pid。如果前臺只有一個任務(wù),可以不指定 jobnumber。 
如果希望將當(dāng)前任務(wù)轉(zhuǎn)移到后臺,可以先 Ctrl+z 暫停任務(wù),再使用 bg 命令。任務(wù)轉(zhuǎn)移到后臺可以空出終端,繼續(xù)輸入其他命令。

到此這篇關(guān)于Linux進(jìn)程管理的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • linux 中的atq命令

    linux 中的atq命令

    atq命令顯示系統(tǒng)中待執(zhí)行的任務(wù)列表,也就是列出當(dāng)前用戶的at任務(wù)列表。下面通過本文給大家分享linux 中的atq命令,感興趣的朋友一起看看吧
    2017-09-09
  • Ubuntu配置NFS的具體流程(推薦)

    Ubuntu配置NFS的具體流程(推薦)

    下面小編就為大家?guī)硪黄猆buntu配置NFS的具體流程(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Linux Shell 截取字符串的方法示例

    Linux Shell 截取字符串的方法示例

    這篇文章主要介紹了Linux Shell 截取字符串的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 數(shù)據(jù)結(jié)構(gòu) 二叉樹的遞歸與非遞歸

    數(shù)據(jù)結(jié)構(gòu) 二叉樹的遞歸與非遞歸

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 二叉樹的遞歸與非遞歸的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Linux創(chuàng)建用戶的操作命令

    Linux創(chuàng)建用戶的操作命令

    useradd或adduser命令用來建立用戶帳號和創(chuàng)建用戶的起始目錄,使用權(quán)限是超級用戶。這篇文章給大家介紹了Linux創(chuàng)建用戶的操作命令,感興趣的朋友一起看看吧
    2018-08-08
  • shell通過正則匹配ip地址實例代碼

    shell通過正則匹配ip地址實例代碼

    這篇文章主要給大家介紹了關(guān)于shell如何通過正則匹配ip地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用shell具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • linux shell(.sh)腳本編寫和運行入門

    linux shell(.sh)腳本編寫和運行入門

    這篇文章主要介紹了linux shell(.sh)腳本編寫和運行入門,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Shell實現(xiàn)批量操作文件的方法詳解

    Shell實現(xiàn)批量操作文件的方法詳解

    這篇文章主要為大家總結(jié)了一下Shell實現(xiàn)批量操作文件的命令,例如:查找某文件夾下指定文件所在的路徑、批量刪除某個文件夾下的指定文件,感興趣的可以了解一下
    2022-09-09
  • Shell之function函數(shù)的定義及調(diào)用示例

    Shell之function函數(shù)的定義及調(diào)用示例

    本文主要介紹了Shell之function函數(shù)的定義及調(diào)用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • linux系統(tǒng)mysql自動備份并使用ftp上傳的方法

    linux系統(tǒng)mysql自動備份并使用ftp上傳的方法

    這篇文章主要介紹了linux系統(tǒng)自動導(dǎo)出mysql備份,并上傳到指定ftp,還可以刪除舊的備份文件,大家參考使用吧
    2014-01-01

最新評論