LINUX程式如何管理控制(二)

roc_guo發表於2022-07-21

上篇文章詳細介紹了詳細介紹了靜態檢視 ps命令和動態檢視top命令,關於程式的介紹還有如何控制程式(中斷、停止等), 將在這 篇文章 一一展開描述!

先提出一個疑問:我們可以透過靜態檢視 ps命令和動態檢視top命令 檢視和監測程式,那我們如何得到對它們的控制權呢?

接下來我們使用一個叫做 xlogo  的小程式 做個實驗:

首先,我們先執行 xlogo 命令:

[ root @ probe  ~]$ xlogo

/ / xlogo 程式僅顯示一個大小可調的包含X 標誌的視窗 ,其屬於 X 視窗系統(使圖形介面顯示在螢幕上的底層引擎)提供的示例程式

命令執行片刻, 在螢幕的某個位置 就會 出現 一個包含 X 標誌的小視窗。

在此,學友們就會提出為什麼 shell 提示符還沒有返回 結果呢 原因在於 shell 正在等待這個程式結束, 一旦我們關閉 xlogo 視窗,shell 提示符就返回 結果 了。

中斷程式

執行xlogo 命令, 透過調整視窗大小, 證實這個 程式正在執行。接下來,回到終端視窗,按下 Ctrl-c ,會得出如下結果:

[root@linuxprobe~]$ xlogo

[root@linuxprobe~]$

shell 提示符返回 意味著輸入 Ctrl-c, 將會 中斷程式,xlogo 視窗關閉。 linux系統中,你可以透過 Ctrl-c ,許多(但不是全部)命令列程式都可以被中斷。

停止程式

在某種情況下,我們只是想要停止一個程式,而不是終止它,那麼可以使用 Ctrl-z, 即可 停止前臺程式 ,並轉為後臺 舉例:

在命令提示符下,執行xlogo 命令,然後輸入 Ctrl-z:

[root@linuxprobe~]$ xlogo

[1]+ Stopped xlogo

[root@linuxprobe~]$

使用 fg 命令,可以恢復程式到前臺執行,或者用bg 命令把程式移到後 臺。

[root@linuxprobe~]$ bg %1

[1]+ xlogo &

[root@linuxprobe~]$

在使用 Ctrl-c 和Ctrl-z 的 執行 過程中我們 可以清晰地 看到訊號的實際用法。當終端接受了一個 按鍵組合後,它就會給在前端執行的命令程式傳送一個訊號。

Ctrl-c 和Ctrl-z 的執行過程 會有所不同,使用 Ctrl-c, 會傳送一個叫 INT(Interrupt, 中斷)的訊號;當使用Ctrl-z 時, 傳送一個叫做TSTP(Terminal Stop, 終端停止)的訊號。監聽訊號的到來,當程式接到訊號之後,則做出相應響應。

使用 kill 命令給程式傳送訊號

語法形式: kill [-signal] PID...

編號

名字

含義

1

HUP

掛起( Hangup)。這個訊號被用來告訴程式,控制的終端機已經“結束通話”。透過關閉一個終端會話,可以展示這個訊號的作用。在當前終端執行的前臺程式將會收到這個訊號並終止。許多守護程式也使用這個訊號,來重新初始化。

這意味著,當一個守護程式收到這個訊號後,這個程式會重新啟動,並且重新讀取它的配置檔案。 Apache網路伺服器守護程式就是一個例子。

2

INT

中斷。實現和 Ctrl-c一樣的功能,由終端傳送。通常, 它會終止一個程式。

9

KILL

殺死。 KILL 訊號從不被髮送到目標程式 而是核心立 即終止這個程式。當一個程式以這種方式終止的時候,它沒有機會去做些 “清理”工作,或者是儲存工作。

鑑於以上原因, 當其它 終止訊號失敗後,再使用它。

1 5

TERM

終止。這是 kill 命令傳送的預設訊號。如果程式仍然 “活著”,可以接受訊號,那麼這個它會終止。

1 8

CONT

繼續。在一個停止訊號後,這個訊號會恢復程式的執行。

1 9

STOP

停止。這個訊號導致程式停止執行,而不是終止。像 KILL 訊號,它不被髮送到目標程式,因此它不能被 忽略。

如果在命令引數中並沒有指定訊號,那麼預設情況下,他會傳送 TERM(Terminate,終止)訊號。

[root@linuxprobe~]$ xlogo 1] 13601

[root@linuxprobe~]$ kill -INT 13601

[1]+ Interrupt            xlogo

[root@linuxprobe~]$ xlogo &

[1] 13608

[root@linuxprobe~]$ kill -SIGINT 13608

[1]+ Interrupt            xlogo

 

使用 killall 命令給多個程式傳送訊號

語法形式: killall [-u user] [-signal] naroot...

[root@linuxprobe~]$ xlogo &

[1]         18801

[root@linuxprobe~]$ xlogo &

[2]         18802

[root@linuxprobe~]$ killall xlogo

[1]- Terminated            xlogo

[2]+ Terminated            xlogo

 

需要提醒的是: killall命令 kill 命令一樣,必須擁有超級使用者許可權才能給不屬於 的程式傳送訊號。

監測程式是一個很重要的系統管理任務,所以有更多和程式相關的命令與它相關。在此做個簡單的統計,詳細見下表:

命令名稱

命令描述

pstree

輸出一個樹型結構的程式列表 (processtree),這個列表展示 了程式間父 /子關係。

vmstat

輸出一個系統資源使用快照,包括記憶體,交換分割槽和磁碟 I/O。為了看到連續的顯示結果,則在命令名後加上更新操作 延時的時間(以秒為單位)。例如, vmstat 5”。,按下Ctrl-c 組合鍵 , 終止輸出。

xload

一個圖形介面程式,可以畫出系統負載隨時間變化的圖形。

tload

terminal load 與xload 程式相似,但是在終端中畫出圖形。 使用 Ctrl-c,來終止輸出。

更多關於程式的介紹及實驗,請移步 ,這本書籍所附實驗程式碼及例項會助你一臂之力,將是 linux學習過程的很好的伴侶!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2905681/,如需轉載,請註明出處,否則將追究法律責任。

相關文章