中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

??谧鼍W(wǎng)站10大品牌優(yōu)化大師使用心得

??谧鼍W(wǎng)站10大品牌,優(yōu)化大師使用心得,網(wǎng)站運營建設(shè)崗位職責,上海公安廳網(wǎng)站官網(wǎng)本篇將介紹Linux的進程管理相關(guān)知識,并將深入介紹Linux的進程間相互通信。 進程就是運行中的程序,一個運行著的程序,可能有多個進程。 比如Oracle DB,啟動Oracle實例服務(wù)后,就會有多個進程。 Linux進程分類 在 Linux…

本篇將介紹Linux的進程管理相關(guān)知識,并將深入介紹Linux的進程間相互通信。
進程就是運行中的程序,一個運行著的程序,可能有多個進程。 比如Oracle DB,啟動Oracle實例服務(wù)后,就會有多個進程。

Linux進程分類

在 Linux 系統(tǒng)中,進程可以分為以下幾類:

1、用戶進程和系統(tǒng)進程

用戶進程:
–由用戶啟動的應(yīng)用程序或服務(wù),例如文本編輯器、瀏覽器、數(shù)據(jù)庫客戶端等。
–這些進程在用戶的權(quán)限下運行,通常只能訪問用戶自己的數(shù)據(jù)和資源。
–用戶進程的優(yōu)先級相對較低,系統(tǒng)會根據(jù)資源的可用性和其他因素來調(diào)度它們的執(zhí)行。
系統(tǒng)進程:
–由操作系統(tǒng)內(nèi)核啟動的進程,用于管理系統(tǒng)資源、提供服務(wù)和執(zhí)行系統(tǒng)級任務(wù)。例如,init進程(或systemd進程)是系統(tǒng)啟動時第一個運行的進程,負責啟動其他系統(tǒng)服務(wù)和管理系統(tǒng)的運行狀態(tài)。
–系統(tǒng)進程通常具有較高的優(yōu)先級,以確保系統(tǒng)的穩(wěn)定運行和對關(guān)鍵任務(wù)的響應(yīng)。
2、前臺進程和后臺進程
前臺進程:
–與用戶交互的進程,通常在終端窗口中運行,接收用戶的輸入并顯示輸出。例如,當你在終端中運行一個命令時,該命令對應(yīng)的進程就是前臺進程,直到它執(zhí)行完畢或被中斷,終端窗口才會恢復(fù)可用狀態(tài)。
后臺進程:
–在后臺運行的進程,不與用戶直接交互,可以在終端窗口繼續(xù)執(zhí)行其他命令的同時運行。
–可以通過在命令末尾加上 “&” 符號來將一個進程放入后臺運行。例如,command &。
–后臺進程通常用于執(zhí)行長時間運行的任務(wù),如數(shù)據(jù)備份、文件下載等,不會阻塞終端的使用。
3、守護進程(Daemon)
定義和特點:
–守護進程是在后臺持續(xù)運行的特殊進程,通常在系統(tǒng)啟動時自動啟動,并一直運行直到系統(tǒng)關(guān)閉。
–它們不與終端關(guān)聯(lián),獨立于用戶登錄和注銷,負責執(zhí)行特定的系統(tǒng)任務(wù)或提供特定的服務(wù)。
–守護進程通常具有較高的穩(wěn)定性和可靠性,能夠在系統(tǒng)運行過程中持續(xù)提供服務(wù),不受用戶交互的影響。
常見的守護進程:
httpd:Web 服務(wù)器守護進程,用于提供 HTTP 服務(wù)。
sshd:SSH 服務(wù)器守護進程,允許遠程用戶通過 SSH 協(xié)議登錄到系統(tǒng)。
crond:定時任務(wù)守護進程,負責按照預(yù)定的時間表執(zhí)行任務(wù)。
syslogd:系統(tǒng)日志守護進程,記錄系統(tǒng)中的各種事件和消息。
4、孤兒進程和僵尸進程
孤兒進程:
–當一個父進程先于其子進程結(jié)束時,子進程就成為孤兒進程。
–孤兒進程會被init進程(或systemd進程)收養(yǎng),由init進程負責管理它們的資源和狀態(tài)。
僵尸進程:
–當一個子進程結(jié)束時,它的資源并不會立即被釋放,而是會保留一些狀態(tài)信息,直到父進程讀取這些信息為止。在這個期間,子進程就成為僵尸進程。
–如果父進程沒有正確地處理子進程的結(jié)束狀態(tài),僵尸進程可能會一直存在,占用系統(tǒng)資源。
可以使用ps或者top命令查看僵尸進程,其狀態(tài)通常顯示為 “Z”。
在這里插入圖片描述

進程的屬性

進程具有以下一些主要屬性:

1、進程標識符(PID)

定義:每個進程都有唯一的進程標識符(Process ID,PID),用于在系統(tǒng)中標識該進程。
作用:操作系統(tǒng)通過 PID 來區(qū)分不同的進程,進行進程管理和調(diào)度。例如,使用命令如 ps、top、kill 等時,通常需要指定進程的 PID。

2、父進程標識符(PPID)

定義:每個進程都有一個父進程,除了初始進程(通常是 init 進程或 systemd 進程)。父進程標識符(Parent Process ID,PPID)用于標識創(chuàng)建當前進程的父進程。
作用:可以通過 PPID 來追蹤進程的創(chuàng)建關(guān)系,了解進程的層次結(jié)構(gòu)。在故障排除時,有時可以通過查看父進程的行為來確定子進程出現(xiàn)問題的原因。

3、進程狀態(tài)

運行狀態(tài)(Running):進程正在被 CPU 執(zhí)行。
就緒狀態(tài)(Ready):進程已經(jīng)準備好被 CPU 執(zhí)行,等待分配 CPU 時間片。
睡眠狀態(tài)(Sleeping):進程處于等待狀態(tài),例如等待 I/O 操作完成、等待信號等。睡眠狀態(tài)又分為可中斷睡眠(Interruptible Sleep)和不可中斷睡眠(Uninterruptible Sleep)。
停止狀態(tài)(Stopped):進程被暫停,通常是由于接收到信號,如 SIGSTOP。
僵尸狀態(tài)(Zombie):子進程已經(jīng)結(jié)束,但父進程還沒有回收其資源,處于僵尸狀態(tài)的進程只保留一些退出信息,等待父進程讀取。

4、優(yōu)先級

定義:進程的優(yōu)先級決定了它在系統(tǒng)中獲得 CPU 時間片的機會。優(yōu)先級高的進程會優(yōu)先被調(diào)度執(zhí)行。
調(diào)整:可以使用命令如 nice 和 renice 來調(diào)整進程的優(yōu)先級。優(yōu)先級數(shù)值越低,優(yōu)先級越高。例如,nice -n -10 command 以較高優(yōu)先級啟動一個命令,renice -n 5 -p PID 將進程的優(yōu)先級調(diào)整為 5。

5、資源占用

CPU 占用:進程在運行時會占用 CPU 時間??梢酝ㄟ^工具如 top、htop 等查看進程的 CPU 占用率。
內(nèi)存占用:進程會占用一定數(shù)量的內(nèi)存空間,包括代碼、數(shù)據(jù)、棧等。同樣可以使用系統(tǒng)工具查看進程的內(nèi)存使用情況。
文件描述符:進程可能會打開文件、網(wǎng)絡(luò)連接等資源,這些資源通過文件描述符來表示。每個進程都有一定數(shù)量的文件描述符可用。

6、環(huán)境變量

定義:進程在運行時可以訪問一組環(huán)境變量,這些變量包含了關(guān)于系統(tǒng)和用戶配置的信息。
作用:環(huán)境變量可以影響進程的行為,例如指定程序的搜索路徑、配置數(shù)據(jù)庫連接參數(shù)等??梢酝ㄟ^命令 env 查看當前進程的環(huán)境變量,也可以在啟動進程時設(shè)置特定的環(huán)境變量。

7、命令行參數(shù)

定義:當啟動一個進程時,可以傳遞一些命令行參數(shù)給它。這些參數(shù)可以影響進程的行為和功能。
作用:例如,一個文本編輯器可以接受文件名作為命令行參數(shù),直接打開指定的文件。命令行參數(shù)可以讓進程更加靈活地適應(yīng)不同的使用場景。

父進程和子進程

為什么要把父進程和子進程單獨拿出講,因為很重要啦,父進程和子進程是進程關(guān)系中的重要概念。

1、父進程與子進程的創(chuàng)建

當一個進程使用特定的系統(tǒng)調(diào)用(如 fork)時,它可以創(chuàng)建一個新的進程,即子進程。這個新創(chuàng)建的子進程幾乎是父進程的一個副本,包括代碼、數(shù)據(jù)、打開的文件描述符等。
例如,以下是一個使用 C 語言創(chuàng)建子進程的示例代碼:

2、資源共享與獨立性

資源共享:
–子進程繼承了父進程的許多屬性,但也有一定的獨立性。子進程會繼承父進程打開的文件描述符,這意味著如果父進程打開了一個文件,子進程也可以訪問這個文件。
–然而,子進程對文件描述符的操作(如讀取、寫入、關(guān)閉)不會影響父進程,除非進行了特定的同步操作。
獨立性:
–子進程有自己的內(nèi)存空間、寄存器狀態(tài)等。雖然子進程開始時與父進程的內(nèi)存內(nèi)容相同,但后續(xù)的修改是獨立的。
–子進程的運行不會影響父進程的執(zhí)行,除非通過特定的進程間通信機制(如管道、信號、共享內(nèi)存等)進行交互。

3、父子進程的關(guān)系管理

父進程責任:
–通常,父進程負責創(chuàng)建和監(jiān)控子進程。父進程可以通過系統(tǒng)調(diào)用(如 wait 或 waitpid)等待子進程結(jié)束,并獲取子進程的退出狀態(tài)。
–如果父進程沒有正確地等待子進程結(jié)束,子進程可能會成為僵尸進程,占用系統(tǒng)資源。
子進程行為:
–子進程可以獨立地執(zhí)行自己的任務(wù)。它可以根據(jù)需要修改自己的狀態(tài)和資源,而不會直接影響父進程。
–子進程可以通過 exec 系列函數(shù)加載新的程序,替換自己的代碼和數(shù)據(jù),從而執(zhí)行不同的任務(wù)。

4、應(yīng)用場景

并發(fā)執(zhí)行任務(wù):
父進程可以創(chuàng)建多個子進程,讓它們同時執(zhí)行不同的任務(wù),以提高系統(tǒng)的并行性和效率。例如,在服務(wù)器應(yīng)用中,父進程可以創(chuàng)建多個子進程來處理客戶端請求。
資源管理:
父進程可以控制子進程的資源分配和使用。例如,父進程可以限制子進程的 CPU 時間、內(nèi)存使用等,以確保系統(tǒng)的穩(wěn)定性和公平性。
進程間通信:
父子進程可以通過特定的進程間通信機制進行交互,共享數(shù)據(jù)和狀態(tài)信息。例如,通過管道可以在父子進程之間傳遞數(shù)據(jù)。

linux進程通信(IPC,Inter - Process Communication)

在 Linux 中,進程通信有多種方式,以下是常見的幾種:

管道(Pipe)

–定義和原理:管道是一種半雙工的通信方式,數(shù)據(jù)只能單向流動,通常用于具有親緣關(guān)系(如父子進程)的進程之間通信。它是基于文件描述符來實現(xiàn)的,通過內(nèi)核緩沖區(qū)來傳遞數(shù)據(jù)。
–使用方法:通過pipe()系統(tǒng)調(diào)用創(chuàng)建管道,會返回兩個文件描述符,一個用于讀,一個用于寫。例如,在父子進程通信中,父進程可以通過fork()創(chuàng)建子進程后,關(guān)閉不需要的文件描述符端,然后通過write()向管道寫入數(shù)據(jù),子進程通過read()從管道讀取數(shù)據(jù)。

命名管道(FIFO)

–定義和原理:命名管道克服了管道只能用于親緣關(guān)系進程的限制,它是一種特殊類型的文件,在文件系統(tǒng)中有一個文件名,可以被多個無親緣關(guān)系的進程訪問。其通信原理也是基于內(nèi)核緩沖區(qū)。
–使用方法:可以使用mkfifo()系統(tǒng)調(diào)用來創(chuàng)建命名管道。一個進程以寫方式打開命名管道,另一個進程以讀方式打開命名管道,這樣就可以實現(xiàn)通信。例如,進程 A 通過open(“myfifo”, O_WRONLY)打開命名管道用于寫數(shù)據(jù),進程 B 通過open(“myfifo”, O_RDONLY)打開用于讀數(shù)據(jù)。

消息隊列(Message Queue)

–定義和原理:消息隊列是一個由內(nèi)核維護的消息鏈表,消息被組織成一個個獨立的數(shù)據(jù)單元,每個消息有自己的類型。進程可以向消息隊列發(fā)送消息,也可以從消息隊列接收消息,消息的發(fā)送和接收是異步的。
–使用方法:首先通過msgget()系統(tǒng)調(diào)用創(chuàng)建或獲取一個消息隊列標識符。然后通過msgsnd()發(fā)送消息,消息是一個包含消息類型和消息內(nèi)容的結(jié)構(gòu)體。接收消息使用msgrcv(),可以根據(jù)消息類型有選擇地接收消息。

共享內(nèi)存(Shared Memory)

–定義和原理:共享內(nèi)存是最快的進程通信方式,它允許兩個或多個進程共享一塊內(nèi)存區(qū)域。這些進程可以直接讀寫這塊共享內(nèi)存,就像訪問自己的內(nèi)存空間一樣,減少了數(shù)據(jù)復(fù)制的開銷。不過這種方式需要注意進程之間的同步和互斥問題。
–使用方法:使用shmget()系統(tǒng)調(diào)用創(chuàng)建或獲取共享內(nèi)存段的標識符。通過shmat()將共享內(nèi)存段連接到進程的地址空間,使進程可以訪問共享內(nèi)存。進程使用完共享內(nèi)存后,通過shmdt()分離共享內(nèi)存段,最后通過shmctl()進行共享內(nèi)存段的控制,如標記為刪除等操作。

信號量(Semaphore)

–定義和原理:信號量主要用于實現(xiàn)進程之間的同步和互斥,它是一個計數(shù)器,用于控制對共享資源的訪問。當信號量的值大于 0 時,表示資源可用;當信號量的值等于 0 時,表示資源已被占用。
–使用方法:通過semget()系統(tǒng)調(diào)用創(chuàng)建或獲取信號量集的標識符。使用semctl()對信號量進行初始化和控制操作。進程在訪問共享資源之前,通過semop()操作信號量,根據(jù)信號量的值來判斷是否可以訪問資源。

信號(Signal)

定義和原理:信號是一種異步通信機制,用于通知進程某個事件的發(fā)生。例如,當用戶按下 Ctrl + C 時,會向當前進程發(fā)送一個SIGINT信號,進程收到信號后可以采取相應(yīng)的措施,如終止進程或執(zhí)行特定的信號處理函數(shù)。
使用方法:可以使用signal()或sigaction()系統(tǒng)調(diào)用來設(shè)置信號的處理函數(shù)。當信號產(chǎn)生時,內(nèi)核會中斷進程的正常執(zhí)行流程,轉(zhuǎn)而執(zhí)行信號處理函數(shù)。
注:Linux進程間通訊比較復(fù)雜,更深層次的介紹需要閱讀源碼來解讀,超出了本節(jié)的范疇。

進程的管理命令

Linux的進程管理命令有很多,限于篇幅和常用性,在次重點介紹最常用的三個:top/ps/pstree。其他命令會在文末附上,方便大家查詢使用。

top

top命令是一個用于實時監(jiān)控系統(tǒng)進程和資源使用情況的強大工具。

1、top命令的輸出內(nèi)容

啟動top:在終端中輸入top并回車,即可啟動top命令。它會顯示系統(tǒng)中正在運行的進程列表,以及系統(tǒng)的整體資源使用情況。
在這里插入圖片描述
進程列表信息:
PID:進程標識符。
USER:進程所有者。
PR:進程優(yōu)先級。
NI:進程的 nice 值,用于調(diào)整優(yōu)先級。
VIRT:進程使用的虛擬內(nèi)存大小。
RES:進程使用的物理內(nèi)存大小。
SHR:進程共享的內(nèi)存大小。
S:進程狀態(tài),如R(運行中)、S(睡眠中)、Z(僵尸狀態(tài))等。
%CPU:進程占用的 CPU 百分比。
%MEM:進程占用的內(nèi)存百分比。
TIME+:進程使用的 CPU 時間。
COMMAND:啟動進程的命令。
系統(tǒng)資源信息:
top命令頂部顯示了系統(tǒng)的整體資源使用情況,包括:
Tasks:總進程數(shù)、正在運行的進程數(shù)、睡眠中的進程數(shù)等。
Cpu(s):CPU 使用率,包括用戶空間、系統(tǒng)空間、空閑時間等的百分比。
Mem:內(nèi)存使用情況,包括總內(nèi)存、已使用內(nèi)存、空閑內(nèi)存等。
Swap:交換空間使用情況。

2、交互操作

排序:
按P鍵可以按照 CPU 使用率對進程列表進行排序,從高到低顯示占用 CPU 最多的進程。
按M鍵可以按照內(nèi)存使用率對進程列表進行排序。
刷新:
默認情況下,top會定期自動刷新顯示。也可以按空格鍵手動刷新。
退出:
按q鍵可以退出top命令。
查看特定進程:
在top運行時,可以輸入進程的 PID,然后按回車鍵,即可聚焦顯示該特定進程的信息。
切換顯示模式:
按l鍵可以切換顯示平均負載和任務(wù)數(shù)。
按t鍵可以切換顯示進程的 CPU 時間和累計時間。
改變更新頻率:
按s鍵可以設(shè)置top的更新頻率,輸入一個數(shù)字表示更新時間間隔(以秒為單位)。

3、高級用法

命令行參數(shù):

top -b:

以批處理模式運行top,不顯示交互界面,適合將輸出重定向到文件或其他程序進行分析。

top -n 10:

只顯示 10 次更新,然后自動退出。

top -d 5:

設(shè)置更新時間間隔為 5 秒。
過濾進程:
在top運行時,可以輸入/后跟一個關(guān)鍵字,如進程名稱或用戶名稱,來過濾顯示的進程列表。例如,輸入/firefox可以只顯示與 Firefox 相關(guān)的進程。
保存配置:
top的一些配置可以保存在用戶的~/.toprc文件中,以便下次啟動時自動應(yīng)用這些配置。例如,可以設(shè)置默認的排序方式、更新頻率等。

PS

ps(process status)命令用于顯示當前系統(tǒng)中的進程狀態(tài)。

1、基本用法

顯示當前用戶的進程:
ps:默認情況下,只顯示當前用戶在當前終端中啟動的進程。
顯示所有用戶的進程:

ps -ef:

以全格式顯示系統(tǒng)中的所有進程信息,包括進程的用戶、PID、PPID、CPU 使用率、內(nèi)存使用情況、啟動時間、命令等。

ps aux:

也顯示系統(tǒng)中的所有進程信息,但輸出格式略有不同,更易讀,通常和grep及管道命令搭配使用以提高效率。

2、輸出字段解釋

UID:進程所有者的用戶 ID。
PID:進程標識符。
PPID:父進程標識符。
C:CPU 使用率。
STIME:進程啟動時間。
TTY:控制終端的設(shè)備名稱。
TIME:進程使用的 CPU 時間。
CMD:啟動進程的命令。

3、篩選特定進程

根據(jù) PID 篩選:

ps -p PID:

顯示指定 PID 的進程信息??梢灾付ǘ鄠€ PID,用逗號分隔。例如,ps -p 1234,5678。
根據(jù)進程名稱篩選:

ps -C process_name

顯示指定名稱的進程信息。例如,ps -C firefox顯示所有與 Firefox 相關(guān)的進程。
根據(jù)用戶篩選:

ps -u username:

顯示指定用戶的進程信息。例如,ps -u john顯示用戶 john 擁有的進程。
4、輸出格式控制
自定義輸出字段:

ps -o field1,field2,...:

指定要顯示的字段。例如,ps -o pid,cmd只顯示進程 ID 和命令。
以樹形結(jié)構(gòu)顯示進程關(guān)系:

ps -ef --forest:

以樹形結(jié)構(gòu)顯示進程的父子關(guān)系,更直觀地看出進程的層次結(jié)構(gòu)。

5、高級用法

結(jié)合其他命令使用:
可以將ps的輸出作為其他命令的輸入,進行進一步的處理。例如,ps -ef | grep process_name可以查找特定名稱的進程。

ps -ef | awk '{print $2}'

可以提取所有進程的 PID。
實時監(jiān)控進程:

watch -n 1 'ps -ef':

每 1 秒執(zhí)行一次ps -ef命令,實時監(jiān)控系統(tǒng)中的進程變化。
按特定條件排序:

ps -ef --sort=-pcpu:

按 CPU 使用率從高到低排序顯示進程??梢允褂貌煌呐判蜃侄?#xff0c;如-pmem按內(nèi)存使用率排序。

pstree

pstree命令用于以樹形結(jié)構(gòu)顯示進程之間的關(guān)系。

1、基本用法

顯示所有進程的樹形結(jié)構(gòu):
pstree:默認情況下,以樹形結(jié)構(gòu)顯示系統(tǒng)中所有進程的關(guān)系,每個進程用進程名稱表示,父進程和子進程之間用連線連接。
顯示特定用戶的進程樹:
pstree -u username:顯示指定用戶的進程樹。例如,pstree -u john顯示用戶 john 擁有的進程及其關(guān)系。

2、輸出格式控制

顯示進程 PID:
pstree -p:在進程名稱后面顯示進程的 PID。例如,init(1)-±acpid(2777)表示進程init的 PID 是 1,acpid的 PID 是 2777。
顯示完整命令行:
pstree -a:在進程名稱后面顯示完整的命令行參數(shù)。這對于了解進程的具體啟動參數(shù)很有幫助。
同時顯示 PID 和完整命令行:
pstree -ap:結(jié)合了上述兩種選項,既顯示進程 PID,又顯示完整命令行。

3、高級用法

過濾特定進程:

pstree | grep process_name:

可以使用管道將pstree的輸出傳遞給grep命令,以過濾顯示特定進程及其子進程。例如,pstree | grep firefox顯示與 Firefox 相關(guān)的進程樹。
以特定格式輸出:
pstree -A:以 ASCII 藝術(shù)形式顯示進程樹,更加美觀。但這種格式可能在某些終端中顯示不完整。
pstree -G:以不同的顏色顯示不同類型的進程,增強可讀性。但需要終端支持顏色顯示。
結(jié)合其他工具使用:
可以將pstree的輸出重定向到文件,以便進一步分析。例如,pstree > process_tree.txt將進程樹保存到文件中。
也可以在腳本中使用pstree來獲取進程信息,進行自動化的系統(tǒng)管理任務(wù)。

附:進程管理命令大全(95%以上)

進程管理相關(guān)命令{

    ps -eaf               # 查看所有進程kill -9 PID           # 強制終止某個PID進程kill -15 PID          # 安全退出 需程序內(nèi)部處理信號cmd &                 # 命令后臺運行nohup cmd &           # 后臺運行不受shell退出影響ctrl+z                # 將前臺放入后臺(暫停)jobs                  # 查看后臺運行程序bg 2                  # 啟動后臺暫停進程fg 2                  # 調(diào)回后臺進程pstree                # 進程樹vmstat 1 9            # 每隔一秒報告系統(tǒng)性能信息9次sar                   # 查看cpu等狀態(tài)lsof file             # 顯示打開指定文件的所有進程lsof -i:32768         # 查看端口的進程renice +1 180         # 把180號進程的優(yōu)先級加1exec sh a.sh          # 子進程替換原來程序的pid, 避免supervisor無法強制殺死進程ps{ps aux |grep -v USER | sort -nk +4 | tail       # 顯示消耗內(nèi)存最多的10個運行中的進程,以內(nèi)存使用量排序.cpu +3# USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND%CPU     # 進程的cpu占用率%MEM     # 進程的內(nèi)存占用率VSZ      # 進程虛擬大小,單位K(即總占用內(nèi)存大小,包括真實內(nèi)存和虛擬內(nèi)存)RSS      # 進程使用的駐留集大小即實際物理內(nèi)存大小START    # 進程啟動時間和日期占用的虛擬內(nèi)存大小 = VSZ - RSSps -eo pid,lstart,etime,args         # 查看進程啟動時間}top{前五行是系統(tǒng)整體的統(tǒng)計信息。第一行: 任務(wù)隊列信息,同 uptime 命令的執(zhí)行結(jié)果。內(nèi)容如下:01:06:48 當前時間up 1:22 系統(tǒng)運行時間,格式為時:分1 user 當前登錄用戶數(shù)load average: 0.06, 0.60, 0.48 系統(tǒng)負載,即任務(wù)隊列的平均長度。三個數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值。第二、三行:為進程和CPU的信息。當有多個CPU時,這些內(nèi)容可能會超過兩行。內(nèi)容如下:Tasks: 29 total 進程總數(shù)1 running 正在運行的進程數(shù)28 sleeping 睡眠的進程數(shù)0 stopped 停止的進程數(shù)0 zombie 僵尸進程數(shù)Cpu(s): 0.3% us 用戶空間占用CPU百分比1.0% sy 內(nèi)核空間占用CPU百分比0.0% ni 用戶進程空間內(nèi)改變過優(yōu)先級的進程占用CPU百分比98.7% id 空閑CPU百分比0.0% wa 等待輸入輸出的CPU時間百分比0.0% hi0.0% si第四、五行:為內(nèi)存信息。內(nèi)容如下:Mem: 191272k total 物理內(nèi)存總量173656k used 使用的物理內(nèi)存總量17616k free 空閑內(nèi)存總量22052k buffers 用作內(nèi)核緩存的內(nèi)存量Swap: 192772k total 交換區(qū)總量0k used 使用的交換區(qū)總量192772k free 空閑交換區(qū)總量123988k cached 緩沖的交換區(qū)總量。內(nèi)存中的內(nèi)容被換出到交換區(qū),而后又被換入到內(nèi)存,但使用過的交換區(qū)尚未被覆蓋,該數(shù)值即為這些內(nèi)容已存在于內(nèi)存中的交換區(qū)的大小。相應(yīng)的內(nèi)存再次被換出時可不必再對交換區(qū)寫入。進程信息區(qū),各列的含義如下:  # 顯示各個進程的詳細信息序號 列名    含義a   PID      進程idb   PPID     父進程idc   RUSER    Real user named   UID      進程所有者的用戶ide   USER     進程所有者的用戶名f   GROUP    進程所有者的組名g   TTY      啟動進程的終端名。不是從終端啟動的進程則顯示為 ?h   PR       優(yōu)先級i   NI       nice值。負值表示高優(yōu)先級,正值表示低優(yōu)先級j   P        最后使用的CPU,僅在多CPU環(huán)境下有意義k   %CPU     上次更新到現(xiàn)在的CPU時間占用百分比l   TIME     進程使用的CPU時間總計,單位秒m   TIME+    進程使用的CPU時間總計,單位1/100秒n   %MEM     進程使用的物理內(nèi)存百分比o   VIRT     進程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RESp   SWAP     進程使用的虛擬內(nèi)存中,被換出的大小,單位kb。q   RES      進程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATAr   CODE     可執(zhí)行代碼占用的物理內(nèi)存大小,單位kbs   DATA     可執(zhí)行代碼以外的部分(數(shù)據(jù)段+棧)占用的物理內(nèi)存大小,單位kbt   SHR      共享內(nèi)存大小,單位kbu   nFLT     頁面錯誤次數(shù)v   nDRT     最后一次寫入到現(xiàn)在,被修改過的頁面數(shù)。w   S        進程狀態(tài)。D=不可中斷的睡眠狀態(tài)R=運行S=睡眠T=跟蹤/停止Z=僵尸進程 父進程在但并不等待子進程x   COMMAND  命令名/命令行y   WCHAN    若該進程在睡眠,則顯示睡眠中的系統(tǒng)函數(shù)名z   Flags    任務(wù)標志,參考 sched.h}列出正在占用swap的進程{#!/bin/bashecho -e "PID\t\tSwap\t\tProc_Name"# 拿出/proc目錄下所有以數(shù)字為名的目錄(進程名是數(shù)字才是進程,其他如sys,net等存放的是其他信息)for pid in `ls -l /proc | grep ^d | awk '{ print $9 }'| grep -v [^0-9]`do# 讓進程釋放swap的方法只有一個:就是重啟該進程?;蛘叩绕渥詣俞尫?。放# 如果進程會自動釋放,那么我們就不會寫腳本來找他了,找他都是因為他沒有自動釋放。# 所以我們要列出占用swap并需要重啟的進程,但是init這個進程是系統(tǒng)里所有進程的祖先進程# 重啟init進程意味著重啟系統(tǒng),這是萬萬不可以的,所以就不必檢測他了,以免對系統(tǒng)造成影響。if [ $pid -eq 1 ];then continue;figrep -q "Swap" /proc/$pid/smaps 2>/dev/nullif [ $? -eq 0 ];thenswap=$(grep Swap /proc/$pid/smaps \| gawk '{ sum+=$2;} END{ print sum }')proc_name=$(ps aux | grep -w "$pid" | grep -v grep \| awk '{ for(i=11;i<=NF;i++){ printf("%s ",$i); }}')if [ $swap -gt 0 ];thenecho -e "${pid}\t${swap}\t${proc_name}"fifidone | sort -k2 -n | awk -F'\t' '{pid[NR]=$1;size[NR]=$2;name[NR]=$3;}END{for(id=1;id<=length(pid);id++){if(size[id]<1024)printf("%-10s\t%15sKB\t%s\n",pid[id],size[id],name[id]);else if(size[id]<1048576)printf("%-10s\t%15.2fMB\t%s\n",pid[id],size[id]/1024,name[id]);elseprintf("%-10s\t%15.2fGB\t%s\n",pid[id],size[id]/1048576,name[id]);}}'}linux操作系統(tǒng)提供的信號{kill -l                    # 查看linux提供的信號trap "echo aaa"  2 3 15    # shell使用 trap 捕捉退出信號# 發(fā)送信號一般有兩種原因:#   1(被動式)  內(nèi)核檢測到一個系統(tǒng)事件.例如子進程退出會像父進程發(fā)送SIGCHLD信號.鍵盤按下control+c會發(fā)送SIGINT信號#   2(主動式)  通過系統(tǒng)調(diào)用kill來向指定進程發(fā)送信號# 進程結(jié)束信號 SIGTERM 和 SIGKILL 的區(qū)別:  SIGTERM 比較友好,進程能捕捉這個信號,根據(jù)您的需要來關(guān)閉程序。在關(guān)閉程序之前,您可以結(jié)束打開的記錄文件和完成正在做的任務(wù)。在某些情況下,假如進程正在進行作業(yè)而且不能中斷,那么進程可以忽略這個SIGTERM信號。# 如果一個進程收到一個SIGUSR1信號,然后執(zhí)行信號綁定函數(shù),第二個SIGUSR2信號又來了,第一個信號沒有被處理完畢的話,第二個信號就會丟棄。SIGHUP  1          A     # 終端掛起或者控制進程終止SIGINT  2          A     # 鍵盤終端進程(如control+c)SIGQUIT 3          C     # 鍵盤的退出鍵被按下SIGILL  4          C     # 非法指令SIGABRT 6          C     # 由abort(3)發(fā)出的退出指令SIGFPE  8          C     # 浮點異常SIGKILL 9          AEF   # Kill信號  立刻停止SIGSEGV 11         C     # 無效的內(nèi)存引用SIGPIPE 13         A     # 管道破裂: 寫一個沒有讀端口的管道SIGALRM 14         A     # 鬧鐘信號 由alarm(2)發(fā)出的信號SIGTERM 15         A     # 終止信號,可讓程序安全退出 kill -15SIGUSR1 30,10,16   A     # 用戶自定義信號1SIGUSR2 31,12,17   A     # 用戶自定義信號2SIGCHLD 20,17,18   B     # 子進程結(jié)束自動向父進程發(fā)送SIGCHLD信號SIGCONT 19,18,25         # 進程繼續(xù)(曾被停止的進程)SIGSTOP 17,19,23   DEF   # 終止進程SIGTSTP 18,20,24   D     # 控制終端(tty)上按下停止鍵SIGTTIN 21,21,26   D     # 后臺進程企圖從控制終端讀SIGTTOU 22,22,27   D     # 后臺進程企圖從控制終端寫缺省處理動作一項中的字母含義如下:A  缺省的動作是終止進程B  缺省的動作是忽略此信號,將該信號丟棄,不做處理C  缺省的動作是終止進程并進行內(nèi)核映像轉(zhuǎn)儲(dump core),內(nèi)核映像轉(zhuǎn)儲是指將進程數(shù)據(jù)在內(nèi)存的映像和進程在內(nèi)核結(jié)構(gòu)中的部分內(nèi)容以一定格式轉(zhuǎn)儲到文件系統(tǒng),并且進程退出執(zhí)行,這樣做的好處是為程序員提供了方便,使得他們可以得到進程當時執(zhí)行時的數(shù)據(jù)值,允許他們確定轉(zhuǎn)儲的原因,并且可以調(diào)試他們的程序。D  缺省的動作是停止進程,進入停止狀況以后還能重新進行下去,一般是在調(diào)試的過程中(例如ptrace系統(tǒng)調(diào)用)E  信號不能被捕獲F  信號不能被忽略}

本篇完結(jié)。
碼字不易,寶貴經(jīng)驗分享不易,請各位支持原創(chuàng),轉(zhuǎn)載注明出處,多多關(guān)注作者。

http://www.risenshineclean.com/news/43187.html

相關(guān)文章:

  • 淘客優(yōu)惠券推廣網(wǎng)站怎么做客戶營銷
  • 阿里云怎么做網(wǎng)站滄浪seo網(wǎng)站優(yōu)化軟件
  • 學(xué)完html怎么做網(wǎng)站網(wǎng)絡(luò)營銷工程師培訓(xùn)
  • 做電影網(wǎng)站程序哪個好360網(wǎng)站安全檢測
  • 誰知道深圳松崗天橋旁的網(wǎng)站建設(shè)營銷軟文200字
  • apache 創(chuàng)建網(wǎng)站網(wǎng)絡(luò)公司網(wǎng)站建設(shè)
  • 杭州的網(wǎng)站建設(shè)公司哪家好網(wǎng)絡(luò)營銷是以什么為基礎(chǔ)
  • 怎么做網(wǎng)站聊天視頻直播進入百度官網(wǎng)
  • 網(wǎng)站開發(fā)的測試計劃全網(wǎng)營銷軟件
  • 諸城 網(wǎng)站 建設(shè)企業(yè)應(yīng)該如何進行網(wǎng)站推廣
  • 云南熱搜科技做網(wǎng)站不給源碼seo這個職位是干什么的
  • 企業(yè)網(wǎng)站制作模板免費下載做seo需要哪些知識
  • 如何自己建設(shè)電影網(wǎng)站制作網(wǎng)站需要什么
  • 網(wǎng)站手機訪問跳轉(zhuǎn)萬網(wǎng)官網(wǎng)域名注冊
  • 網(wǎng)站建設(shè)培訓(xùn)南寧短視頻seo排名加盟
  • 軟件下載類型網(wǎng)站怎么做廣告推送平臺
  • 電子商務(wù)旅游網(wǎng)站建設(shè)策劃書廣州網(wǎng)絡(luò)營銷推廣公司
  • 問卷調(diào)查網(wǎng)站JAVA怎么做網(wǎng)站搭建步驟
  • 客戶開發(fā)軟件工具西安優(yōu)化seo
  • 昆明北京網(wǎng)站建設(shè)做網(wǎng)站的軟件叫什么
  • 婚紗網(wǎng)站建設(shè) 最開始百度百度
  • 個人公眾號做網(wǎng)站網(wǎng)店推廣培訓(xùn)
  • 套網(wǎng)站模板軟件wix網(wǎng)站制作
  • 西寧網(wǎng)站建設(shè)的公司哪家好免費二級域名建站
  • 百度wap網(wǎng)站建設(shè)cdq百度指數(shù)
  • 惠州企業(yè)自助建站自己怎么創(chuàng)建網(wǎng)站
  • 臨沂購買模板建站網(wǎng)頁首頁設(shè)計圖片
  • 深圳教育網(wǎng)站設(shè)計公司鄭州seo顧問培訓(xùn)
  • java做網(wǎng)站沒有php好嗎360瀏覽器網(wǎng)頁版入口
  • 網(wǎng)站查詢信息愛站網(wǎng)關(guān)鍵字挖掘