LINUX程式如何管理控制(二)
上篇文章詳細介紹了詳細介紹了靜態檢視ps命令和動態檢視top命令,關於程式的介紹還有如何控制程式(中斷、停止等),將在這篇文章一一展開描述!
先提出一個疑問:我們可以透過靜態檢視ps命令和動態檢視top命令檢視和監測程式,那我們如何得到對它們的控制權呢?
接下來我們使用一個叫做 的小程式做個實驗:
首先,我們先執行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 訊號從不被髮送到目標程式,而是核心立即終止這個程式。當一個程式以這種方式終止的時候,它沒有機會去做些“清理”工作,或者是儲存工作。 鑑於以上原因,當其它終止訊號失敗後,再使用它。 |
15 |
TERM |
終止。這是kill 命令傳送的預設訊號。如果程式仍然“活著”,可以接受訊號,那麼這個它會終止。 |
18 |
CONT |
繼續。在一個停止訊號後,這個訊號會恢復程式的執行。 |
19 |
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/69901823/viewspace-2906901/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LINUX系統中程式如何管理控制(一)Linux
- LINUX(十一)Linux程式管理及作業控制Linux
- Linux程式管理及作業控制(轉)Linux
- linux驅動程式:控制發光二極體Linux
- 【作業系統】 第二章 程式管理 程式的描述與控制作業系統
- 【Linux】程式控制!!!Linux
- Linux 程式控制Linux
- Linux程式控制Linux
- linux系統程式設計之程式(二):程式生命週期與PCB(程式控制塊)Linux程式設計
- linux程式控制-wait()LinuxAI
- Linux程式控制程式設計Linux程式設計
- Linux 程式管理Linux
- Linux程式管理Linux
- 如何使用阿里雲管理控制檯阿里
- 如何在macOS中管理家長控制?Mac
- 如何在 Linux 上使用 kill 和 killall 來管理程式Linux
- 第二章 程式管理
- Linux-程式管理Linux
- Linux(六)——程式管理Linux
- LINUX 核心程式管理Linux
- Linux 程式管理(轉)Linux
- Linux:程式模型和程式管理Linux模型
- Linux系統管理命令二(轉)Linux
- linux記憶體管理(二)- vmallocLinux記憶體
- Nestjs RBAC 許可權控制管理實踐 (二)JS
- Linux系統管理之程式管理Linux
- 【Linux】python版本控制和環境管理LinuxPython
- 【作業系統】程式管理(二)作業系統
- Linux:使用systemd管理程式Linux
- Linux詳解 --- 程式管理Linux
- [Linux]——程式管理相關Linux
- linux下的程式管理Linux
- 基於Yii2對RabbitMQ的基本用法封裝及消費程式管理控制(二)MQ封裝
- Linux系統管理-工作管理(後臺程式管理)Linux
- linux下epoll如何實現高效處理百萬控制程式碼的Linux
- 序列控制檯如何在 Linux 上工作?Linux
- 如何更改 Linux 控制檯上的字型Linux
- 如何弄清 Linux 系統執行何種系統管理程式Linux