前面的內容中給大家講過了如何檢視程序,今天要給大家講的是對於程序的管理,說的簡單一些就是你可以對程序做的操作,比如控制程序的開啟與關閉,那麼應該如何實現對程序的控制呢?這就需要你給這個程序乙個訊號去告之你想要它幹什麼.
一、常見訊號
先說一說常用的幾個主要代號:
1)代號「1」:sighup,可以啟動被終止的程序,類似於重新啟動吧
2)代號「2」:sigint,這個就相當於用鍵盤使用【ctrl+c】終止程序
3)代號「9」:sigkill,強制終止乙個程序,尤常用於殺掉殭屍程序的父程序
4)代號「15」:sigterm,當該程序正常時,可以使用這個代號將之正常結束,如果已經發生問題,這個代號就沒用了
5)代號「19」:sigstop,相當於使用鍵盤的【ctrl+z】對程序進行暫停
上面所說的是常見的一些訊號,如果你想要知道更多的訊號可以使用【man 7
signal】檢視,我個人認為你只需要記住訊號1、9、15這三個常用的訊號就夠了,那麼在這個過程中,到底是怎麼將乙個訊號傳送給程序的呢,就是用kill或killall來實現的,接下來我們具體看一下:
1、kill -signal pid:kill可以將訊號傳送給某個任務(%jobnumber)或是某個pid(直接輸入數字),注意加粗部分的說法,因為兩者之間是有區別的,這是因為我們的系統裡面存在乙個1號程序,這個程序是系統程序(systemd),一旦被關閉,整個系統就會宕掉,而恰恰同時任務管理裡還有乙個1號任務,所以千萬不要弄混,不然後果自負哦。
2、killall -signal 命令名稱:很明顯這個命令的使用是與上面的不同的,上面的命令是在最後面加上pid或者任務號,而這個命令是在後面加上命令即可。有沒有想過為什麼有了kill這個命令還要有killall,因為上面已經講過了kill這個命令後面要加上程序號,所以有時候kill後面就要結合ps命令,顯得很麻煩,而這個命令就可以直接加上程序的名字,如下所示:
二、程序的優先順序
前面其實已經簡單的提到過,程序是存在優先順序的,畢竟程序也有「高低貴賤」,如果你想要某個程序更快執行,執行的機會更多,就需要去調節pri,這個pri之前也出現過,並且這個pri的數值越小,執行順序就會越靠前,舉個例子
從上圖可以看到我的系統中兩個程序的pri都是80,所以假如此時有很多的程序,你想要讓某乙個程序更先執行,就讓pri變小即可。但是pri的值是由系統的核心動態決定的,使用者是無法直接對其修改的,所以就要另闢蹊徑,因為pri(new)=pri(old)+ni,所以我們可以對ni進行調整,讓ni更小,pri自然就會更小。但是有一點要注意,並不是說此時我的pri是80,我把ni調整為-5,然後pri就一定會變成75,這是不一定的,簡單的說,ni的值可以影響到pri,但是最終的pri值是需要系統的核心動態分析得出的。
關於調整ni的值,有著一些規則,規則如下
接下來說一說如何對ni的值程序調整,對ni的值的調整有兩種方式,分別是:1)一開始執行程式就給予乙個特定的nice值,用nice命令 。2)調整某個已經存在的pid的nice,用renice.下面我們看第一種方式的示範即【nice -n 數字 command】
由上圖可以看到,vi程序的pri已經變成了85,成功。
注意,測試完之後,就要像上面一樣將這個程序殺掉。關於第二種方式其實更為簡單,看示例【renice 數字 pid】
記得修改完之後要恢復原樣
三、系統資源的觀察
1)一般來說,我們會檢視系統cpu、記憶體等資源,這個時候可以使用的命令也有不少,比如free,比如top,free可以看到系統的記憶體,使用top可以實時的檢視,並且可以設定多少秒重新整理一次
2)uname檢視系統與核心相關資訊
3)uptime檢視啟動時間與工作負載
4)vmstat偵測系統資源變化
3和4分別代表3秒一次共執行4次
今天就先講到這裡,明天進行程序方面知識的最後一次學習,然後就會進入到系統服務層面的學習,希望各位朋友在閒暇時間能夠多多複習,咱們明天再見
Linux之 程序管理
1 在linux中,每個執行的程式 都稱為乙個程序。每乙個程序都分配乙個id號 2 每乙個程序,都會對應乙個父程序,而這個父程序可以複製多個子程序。例如www伺服器。3 每個程序都可能以兩種方式存在的。前台與後台,所謂前台程序就是使用者目前的螢幕上可以進行操作的。後台程序則實際在操作,但由於螢幕上無...
Linux之程序管理
所謂的程序也就是執行的程式 running program 通俗一點就是所寫的 正在執行的過程。本來是靜止的才叫程式,但是當程式開始被執行的時候,這段程式就叫做程序了。很明顯程式在被執行,所以程序是動態的,而程式是靜止的。父程序與子程序的關係和幾種情況 子程序是又乙個程序所產生的程序,產生子程序的程...
Linux之程序管理
在linux中每個執行的程式 都稱為乙個程序。每個程序都分配乙個id號。每個程序,都會對應乙個父程序。而這個父程序可以複製多個子程序。一般系統服務都是以後臺程序的方式存在,而且會常駐在系統中。直到關機才結束。檢視程序使用的指令是 ps,使用的引數ps aux ps a 顯示當前終端的所有程序資訊 p...