1. linux有哪些程序
linux下的主要程序狀態有:
2.1 r(task_running) -- 可執行狀態
通過將程序的task_struct結構放到cpu的可執行佇列中,使程序變成r態。只有處在該狀態的程序才有可能被程序排程器選中在cpu上執行
2.2 s(task_interruptible) -- 可中斷的睡眠狀態
當程序需要等待某件事的發生,比如socket連線等待對方輸入時,程序的task_struct結構被放入相應事件的等待佇列中。當事件被觸發時,相應事件的等待佇列中的某些程序就會被喚醒
2.3 d(task_uninterruptible) -- 不可中斷的睡眠狀態
程序此時也是處於睡眠狀態,但是不可以被kill掉。為什麼要設定一種不可中斷的睡眠狀態呢?原來是為了保護核心狀態下的某些流程不被打斷
2.4 t(task_stopped or task_traced) -- 暫停狀態或跟蹤狀態
task_stopped 和task_traced都表示程序被暫停下來,但不同的是task_stopped狀態下,程序可以被sigcont訊號喚醒,而task_traced下程序不能被該訊號喚醒。task_traced狀態通常發生在除錯時,程序在斷電處停下來,此時即被跟蹤,只有當完成除錯時,才能返回task_running狀態
2.5 z(task_dead) -- 退出狀態,也稱殭屍狀態
在這個退出過程中,程序占有的所有資源將被**,除了task_struct結構(以及少數資源)以外。於是程序就只剩下task_struct這麼個空殼,故稱為殭屍。如果父程序不退出,那麼殭屍狀態的子程序就一直存在
2. linux程序管理指令
2.1 ps
ps能列出系統中執行的程序,包括程序號、命令、cpu使用量、記憶體使用量等。下述選項可以得到更多有用的訊息。
#列出所有執行中的程序2.2 pstreelinux中,每個程序都是由其父程序建立的。此命令以視覺化的方式顯示程序,通過程序的樹狀圖來展示程序之間的關係ps -a
# 列出***程序資訊
ps -ef | grep
***# 顯示程序資訊,包括無終端(x)和針對使用者(u)的程序:如user, pid, %cpu, %mem
ps -aux
如果指定了pid,那麼樹的根是該pid,不指定pid=1
top可以監視系統中不同的程序所使用的資源。它提供實時的系統狀態資訊,顯示程序的資料報括了:
htop和top很類似,但是htop是互動式的文字模式的程序檢視器,它通過文字圖形化地顯示每乙個程序的cpu和記憶體使用量、swap使用量。
使用上下游標選擇程序,f7和f8改變優先順序,f9殺死程序。
nice可以設定和改變程序的優先順序
預設情況下,程序以0優先順序啟動,程序優先順序可以通過top顯示的ni列檢視
程序優先順序從-20到19,值越低,優先順序越高
nice2.6 renicerenice命令類似於nice命令《優先順序》 《程序名》
使用renice可以改變正在執行的程序優先順序
注意,使用者只能改變屬於他們自己的程序的優先順序
# 改變3806程序的優先順序為42.7 killrenice -n 4 -p 3806
# 使用者為mint的所有程序優先順序變為-3
renice -3 -u mint
# 殺死某個程序2.8 ulimit該命令用於控制系統資源在shell和程序上的分配量。kill
# 強制殺死某個程序
kill -9
# 殺死擁有相同名字的程序
killall -9
# 使用程序名殺死程序
pkill
《程序名》
可以管理重度使用和存在效能問題的系統,限制資源大小可以確保重要程序持續執行,該程序不會占用過多資源
# 顯示當前使用者關聯的資源限制2.9 ww提供當前登入使用者及其正在執行的程序資訊。ulimit -a
# -f: 最大檔案尺寸大小
# -v: 最大虛擬記憶體大小(kb)
# -n: 增加最大檔案描述符的數量
# -h:改變和報告硬限制
# -s:改變和報告軟限制
顯示的資訊頭包含當前時間、系統執行時長、登入使用者數、過去的1,5,15分鐘內的負載均衡數
2.10 pgrep
pgrep的意思是"程序號全域性正則匹配輸出"
該命令掃瞄當前執行程序,然後按照命令匹配條件列出匹配結果到標準輸出。對於通過名字檢索程序號是很有用
# 顯示使用者為『mint』和程序名為『sh2.11 fg, bg有時,命令需要很長的時間才能執行完成。對於這種情況,我們使用『bg』命令可以將任務放在後台執行,而用『fg』可以調到前台來使用』的程序id
pgrep -u mint sh
# 使用&開啟乙個後台程序2.12 ipcsipcs命令報告程序間通訊設施狀態。(共享記憶體,訊號量和訊息佇列)find . -name *iso > /tmp/res.txt 檢視所有後台程序
jobs
# 將後台程式調到前台執行
fg
# 列出最近訪問了共享記憶體段的程序的建立者的id和程序id參考:ipcs -p -m
Linux Linux下基本指令
1 ls指令 功能 ls,對於目錄,用來列出當前目錄下的所有子目錄與檔案 對於檔案,用來列出檔名以及其他資訊。語法 ls 選項 檔案或目錄 選項 2 pwd命令 功能 顯示使用者當前所在的目錄。3 cd指令 功能 改變工作目錄。將當前工作目錄改變到指定的目錄下。舉例 4 touch指令 功能 tou...
linux linux程序記憶體分析
在產品的開發中,通過對當前系統消耗記憶體總量的統計,可以對產品所需記憶體總量進行精確的評估,從而選擇合適的記憶體晶元與大小,降低產品的成本。在遇到記憶體洩露類問題時,經常會對此束手無策,本文通過對proc下程序相關的檔案進行分析,精確評估系統消耗記憶體的大小,還可以對記憶體洩露類問題的解決提供一種定...
Linux linux程序間通訊
程序間通訊是指在不同程序之間傳播或交換資訊 程序間通訊可分為以下幾類 管道 匿名管道和命名管道 system ipc 訊息佇列 用於資料傳輸 共享記憶體 用於資料共享 訊號量 用於事件通知 posix ipc 訊息佇列 共享記憶體 互斥量條件變數 訊號量讀寫鎖 主要介紹常用的如管道 訊息佇列 訊號量...