程序前後臺與狀態
程式是一組指令及引數的集合,按照既定的邏輯控制計算機執行用來完成特定任務
程序則是執行著的程式,是作業系統執行的基本單位,是程式執行的過程, 動態,有生命週期及執行狀態
程式和程序的區別
程式是靜態的,它只是一組指令的集合,不具有任何的執行意義。而程序是程式執行的動態過程
程序和程式並不是一一對應的關係,相同的程式執行在不同的資料集上就是不同的程序
程序還具有併發性和交往性,而程式卻是封閉的
程序和執行緒的區別
乙個程序可以擁有多個執行緒,而乙個執行緒同時只能被乙個程序所擁有
執行緒不能單獨執行,但是每乙個執行緒都有程式的入口、執行序列以及程式出口,它必須組成程序才能被執
行父子程序的關係子程序是由乙個程序所產生的程序,產生這個子程序的程序稱為父程序 在linux系統中,使用系統呼叫fork建立程序。fork複製的內容包括父程序的資料和堆疊段以及父程序的程序環境。 父程序終止子程序自然終止。子程序繼承父程序的安全性身份、過去和當前的檔案描述符、埠和資源特權、環境變數,以及程式**。隨後,子程序可能exec自己的程式**。通常,父程序在子程序執行期間處於睡眠(sleeping)狀態。當程序完成時發出(exit)訊號請求,在退出時,子程序已經關閉或丟棄了其資源環境,剩餘的部分稱之為僵停(殭屍
zombie)。父程序在子程序退出時收到訊號而被喚醒,清理剩餘的結構,然後繼續執行其自己的程式**。
命令作用
pstree
用於檢視程序樹之間的關係
pstree-a:
各程序樹之間的連線以ascii碼字元來連線
pstree-u
各程序樹之間的連線以utf8字元來連線,某些終端可能會有錯誤
pstree-p
同時列出每個程序的pid
pstree-u
同時列出每個程序的所屬賬號名稱: 命令
作用pgrep
經常要檢視程序的資訊,包括程序的是否已經消亡
pgrep-l
同時顯示程序名和pid
pgrep-o
當匹配多個程序時,顯示程序號最小的那個
pgrep-n
當匹配多個程序時,顯示程序號最大的那個 命令
作用kill
殺死指定的程序
-z只殺死擁有scontext 的程序
-e要求匹配程序名稱
-i忽略小寫
-g殺死程序組而不是程序
-i互動模式,殺死程序前先詢問使用者
-l列出所有的已知訊號名稱
-q不輸出警告資訊
-s傳送指定的訊號
-v報告訊號是否成功傳送
-w等待程序死亡
htop跟top一樣,也是開啟乙個實時的監控介面,直接輸入htop命令開啟如下圖所示介面:
在上圖中將輸出的介面劃分成了四個區域,其中: 上左區域:顯示了cpu、物理記憶體和交換分割槽的資訊; 上右區域:顯示了任務數量、平均負載和連線執行時間等資訊; 程序區域:顯示出當前系統中的所有程序;這裡同top顯示一致
f1:顯示幫助資訊;
f2:配置介面中的顯示資訊;
f3 :搜尋程序
f4:過濾器
f5:以樹形方式顯示
f6:排序方式
f7,f8:調整程序nice值
f9:殺死程序
f10:退出htop
命令作用
lsof
列出當前系統開啟檔案
lsof abc.txt
顯示開啟檔案abc.txt的程序
lsof -c abc
顯示出以字母 abc 開頭程序現在開啟的檔案
lsof -p
1234 列出程序號為1234的程序所開啟的檔案
lsof -g gname/gid
顯示歸屬gname或gid的程序情況
lsof -u uname/uid
顯示歸屬uname或uid的程序情況
lsof +d /usr/local/
顯示目錄下被程序開啟的檔案
lsof +d /usr/local/
同上,但是會搜尋目錄下的目錄,時間較長
lsof -d 4
顯示使用fd為4的程序
lsof -i
用以顯示符合條件的程序情況
前台程序和後台程序
前台程序:在 shell 提示處理打入命令後,建立乙個子程序,執行命令, shell 等待命令退出,然後返回到對使用者給出提示符。這條命令與 shell 非同步執行,即在前台執行,使用者在它完成之前不能執行別乙個命令 。
後台程序:在 shell 提示處打入命令,若後隨乙個 &, shell 建立子程序執行此命令,但不等待命令退出,而直接返回到對使用者給出提示。這條命令與 shell 同步執行,即在後台執行。「後台程序必須是非互動式的」 。
程序狀態在多工處理作業系統中,每個cpu(或核心)在乙個時間點上只能處理乙個程序。在程序執行時,它對cpu時間和資源分配的要求會不斷變化,從而為程序分配乙個狀態,它隨著環境要求而改變。程序優先順序
linux 程序排程及多工:每個cpu(或cpu核心)在乙個時間點上只能處理乙個程序,通過時間片技術,linux實際能夠執行的程序(和執行緒數)可以超出實際可用的cpu及核心數量。linux核心程序排程程式將多個程序在cpu核心上快速切換,從而給使用者多個程序在同時執行的印象。相對優先順序 nice:由於不是每個程序都與其他程序同樣重要,可告知程序排程程式為不同的程序使用不同的排程策略。常規系統上執行的大多數程序所使用的排程策略為sched_other (也稱為sched_normal),但還有其它一些排程策略用於不同的目的。sched_other 排程策略執行的程序的相對優先順序稱為程序的 nice 值,可以有40種不同級別的nice值。
nice 值越高: 表示優先順序越低,例如+19,該程序容易將cpu 使用量讓給其他程序。
nice 值越低: 表示優先順序越高,例如-20,該程序更不傾向於讓出cpu。
Linux 入門基礎
目錄操作 建立目錄 使用 mkdir 命令建立目錄 mkdir home testfolder切換目錄 使用 cd 命令切換目錄 cd home testfolder cd 移動目錄 使用 mv 命令移動目錄 mv home testfolder var tmp刪除目錄 使用 rm rf 命令刪除目...
linux入門基礎
以下講解內容都是基於linux中centos7 x86 64版本 參考電子書 在本地搭建虛擬機器,虛擬機器軟體有vmare,virtualbox。在linux系統中,有幾個目錄是比較重要的,平時需要注意不要誤刪除或者隨意更改內部檔案。etc 裡面放置都是配置檔案,包括自己手動安裝軟體的配置檔案。如果...
Linux基礎入門
使用 mkdir 命令建立目錄 mkdir home testfolder使用 cd 命令切換目錄 cd home testfolder使用 cd 命令切換到上一級目錄 cd 使用 mv 命令移動目錄 mv home testfolder var tmp使用 rm rf 命令刪除目錄 rm rf v...