LINUX程式如何管理控制(二)
上篇文章詳細介紹了詳細介紹了靜態檢視 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LINUX系統中程式如何管理控制(一)Linux
- Linux程式控制Linux
- 【作業系統】 第二章 程式管理 程式的描述與控制作業系統
- Linux程式管理Linux
- Linux 程式管理Linux
- 【Linux】python版本控制和環境管理LinuxPython
- Linux-程式管理Linux
- Linux:程式模型和程式管理Linux模型
- 如何在 Linux 上使用 kill 和 killall 來管理程式Linux
- Linux系統管理之程式管理Linux
- Linux系統管理命令二(轉)Linux
- linux記憶體管理(二)- vmallocLinux記憶體
- Linux詳解 --- 程式管理Linux
- Linux:使用systemd管理程式Linux
- 如何使用阿里雲管理控制檯阿里
- Nestjs RBAC 許可權控制管理實踐 (二)JS
- 序列控制檯如何在 Linux 上工作?Linux
- 第二章 程式管理
- Linux程式管理工具Linux
- Linux運維之程式管理①Linux運維
- Linux安裝及管理程式Linux
- Linux程式及作業管理Linux
- linux 基礎(10)程式管理Linux
- 如何在macOS中管理家長控制?Mac
- (1)Linux效能調優之Linux程式管理Linux
- 如何弄清 Linux 系統執行何種系統管理程式Linux
- 把玩Alpine linux(二):APK包管理器LinuxAPK
- Linux程式設計之gdb(二)Linux程式設計
- 『學了就忘』Linux系統管理 — 84、Linux中程式的管理Linux
- 基於Yii2對RabbitMQ的基本用法封裝及消費程式管理控制(二)MQ封裝
- Linux程式管理與效能監控Linux
- Linux 學習筆記--程式管理Linux筆記
- 修改linux最大檔案控制程式碼數Linux
- 外發圖紙如何控制_外發圖紙如何管理
- 如何在 Linux 中管理日誌Linux
- 專案二 管理與維護Linux系統Linux
- 專案二 管理與維護Linux系統Linux
- linux記憶體管理(十)- 頁面回收(二)Linux記憶體