日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

1-10:学习shell之进程

發(fā)布時(shí)間:2025/3/15 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1-10:学习shell之进程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
  • 一:進(jìn)程如何工作
    • (1)使用ps命令查看進(jìn)程信息
    • (2)使用top命令查看資源管理器
  • 二:控制進(jìn)程
    • (1)中斷進(jìn)程
    • (2)使進(jìn)程在后臺(tái)運(yùn)行
    • (3)fg-使進(jìn)程回到前臺(tái)運(yùn)行
    • (4)暫停進(jìn)程
  • 三:信號
      • A:使用kill命令發(fā)送信號到進(jìn)程
      • B:使用killall命令發(fā)送信號給多個(gè)進(jìn)程

前言

進(jìn)程可以說是Linux中非常重要的概念了,關(guān)于進(jìn)程一些核心概念大家可以移步,在這篇文章中詳細(xì)查看

Linux進(jìn)程

本章需要用到的命令如下

  • ps:顯示當(dāng)前所有進(jìn)程的運(yùn)行情況
  • top:相當(dāng)于資源管理器
  • jobs:列出所有活動(dòng)作業(yè)的狀態(tài)信息
  • bg:設(shè)置在后臺(tái)中運(yùn)行作業(yè)
  • fg:設(shè)置在前臺(tái)中運(yùn)行作業(yè)
  • kill:發(fā)送信號給某個(gè)進(jìn)程
  • killall:殺死指定名字的進(jìn)程
  • shutdown:關(guān)機(jī)或重啟系統(tǒng)

一:進(jìn)程如何工作

系統(tǒng)啟動(dòng)時(shí),內(nèi)核先把它的一些程序初始化為進(jìn)程,然后運(yùn)行一個(gè)稱為init的程序。init程序依次運(yùn)行一系列稱為腳本初始化(init script)的shell腳本(存放于etc目錄下),這些腳本將會(huì)啟動(dòng)所有系統(tǒng)服務(wù)。其中的很多服務(wù)都是通過守護(hù)程序(daemon program)來實(shí)現(xiàn)的。而后臺(tái)程序只是呆在后臺(tái)做他們自己的事情,并且沒有用戶界面。所以即使用戶沒有登錄,系統(tǒng)也在忙于執(zhí)行一些例行程序

內(nèi)核會(huì)保存每個(gè)進(jìn)程的信息以便確保任務(wù)有序進(jìn)行,比如每個(gè)進(jìn)程都將分配一個(gè)稱為進(jìn)程ID(PID)的號碼。進(jìn)程ID是按照遞增的順序分配的,init進(jìn)程始終是1。

(1)使用ps命令查看進(jìn)程信息

如果直接輸入ps命令,將會(huì)輸出和當(dāng)前終端會(huì)話相關(guān)的進(jìn)程信息

  • TTY代表了進(jìn)程的控制終端
  • TIME表示了進(jìn)程消耗CPU的時(shí)間總和

如果在ps后面跟上選項(xiàng)x,也就是ps x,表示告知ps命令顯示所有的進(jìn)程無需關(guān)注他們是由哪個(gè)終端控制的(因?yàn)橛锌赡苡卸鄠€(gè)用戶在使用電腦,所以TTY顯示為問號)

  • 上圖中,多列出一個(gè)選項(xiàng)STAT,它是state的縮寫,表示了進(jìn)程狀態(tài)。關(guān)于進(jìn)程狀態(tài)我在前言的那篇文章中也做了深入的探究。

    還有一個(gè)常用的選項(xiàng)是aux,也就是ps aux,該選項(xiàng)會(huì)輸出每個(gè)用戶的進(jìn)程信息,并且輸出的信息更加豐富
  • 上圖中,列表標(biāo)題的含義如下

(2)使用top命令查看資源管理器

top命令相較于ps命令而言,top可以動(dòng)態(tài)顯示進(jìn)程的信息,默認(rèn)每3s更新一次
它主要查看的是最高進(jìn)程的運(yùn)行狀況

  • 整張圖分為兩個(gè)部分,上半部分顯示的是系統(tǒng)總體狀態(tài)信息,下半部分顯示的是一張按照CPU活動(dòng)排序的進(jìn)程情況表

其中系統(tǒng)總體狀態(tài)信息顯示的內(nèi)容非常有用,主體注解與參考如下(標(biāo)號對應(yīng))


top命令類似于Windows中的資源管理器,但是它是由于資源管理器的,大家可能有這樣的體會(huì),一打開資源管理器CPU的占用率就會(huì)直線上升。

二:控制進(jìn)程

為了方便演示,我們在終端中輸入xlogo,xlogo是由X窗口系統(tǒng)提供的一個(gè)實(shí)例程序,它簡單地顯示了一個(gè)包含X標(biāo)識的可縮放窗口

(1)中斷進(jìn)程

X窗口打開的情況下,可以發(fā)現(xiàn)終端的shell提示符并沒有返回,那是因?yàn)檫@個(gè)進(jìn)程正在運(yùn)行當(dāng)中。如果在終端中輸入Ctrl+C,那么這個(gè)進(jìn)程將會(huì)被終端,并且shell提示符返回

  • 需要注意后臺(tái)進(jìn)程是無法用這種方式終端的,這一點(diǎn)后面會(huì)講到

(2)使進(jìn)程在后臺(tái)運(yùn)行

可以發(fā)現(xiàn)在xlogo運(yùn)行期間,我們是無法對終端進(jìn)行其他操作的,所以如果想要讓進(jìn)程不要在前臺(tái)運(yùn)行,可以在命令后面加入&,也即是xlogo &,這樣的話進(jìn)程將會(huì)轉(zhuǎn)到后臺(tái)運(yùn)行,效果就是我們?nèi)匀荒茉诮K端中輸入其他命令

大家還可以發(fā)現(xiàn)另外有趣的一點(diǎn):當(dāng)把輸入xlogo &后,終端顯示了【1】4467這樣的字樣,這種表現(xiàn)其實(shí)專業(yè)術(shù)語叫做shell的作業(yè)控制,轉(zhuǎn)到后臺(tái)后,shell會(huì)告訴你已經(jīng)啟動(dòng)作業(yè)編號【1】,對應(yīng)PID為4467

如果輸入ps命令,可以發(fā)現(xiàn)除了前面講過的那兩條基本進(jìn)程外,此時(shí)還多了一個(gè)咋們剛才轉(zhuǎn)到后臺(tái)運(yùn)行的xlogo進(jìn)程,而且其PID恰好就是4467

如果想要查看由該終端啟動(dòng)的所有作業(yè)(也就是后臺(tái)進(jìn)程),可以輸入jobs

(3)fg-使進(jìn)程回到前臺(tái)運(yùn)行

后臺(tái)運(yùn)行的程序是無法使用Ctrl+C中斷的。如果要使得后臺(tái)進(jìn)程轉(zhuǎn)到前臺(tái)運(yùn)行,可以使用fg命令,在fg后面加上百分號和作業(yè)編號,也就是fg %1

(4)暫停進(jìn)程

前臺(tái)啟動(dòng)xlogo后,如果此時(shí)按下Ctrl+Z,那么進(jìn)程將被暫停,同時(shí)終端提示已停止,該進(jìn)程會(huì)被轉(zhuǎn)到后臺(tái)

三:信號

使用kill命令可以殺死一個(gè)進(jìn)程,尤其是殺死那些不正常的拒絕終止的程序

但是kill命令的用法并不只是這么簡單,準(zhǔn)確點(diǎn)來說kill的含義是發(fā)送信號給進(jìn)程,使用kill -l可以發(fā)現(xiàn)kill可以發(fā)送的信號有這么多

A:使用kill命令發(fā)送信號到進(jìn)程

kill的基本用法就是kill -信號代碼 PID
眾多信號中,最為常用的是以下幾種

  • 需要注意kill -9,這種終止進(jìn)程的方式屬于“無奈之舉”,當(dāng)進(jìn)程以這種方式被終止時(shí),它將沒有機(jī)會(huì)對自己進(jìn)行清理或保存工作。下面的這張漫畫很形象的說明了它

B:使用killall命令發(fā)送信號給多個(gè)進(jìn)程

使用killall命令可以給指定程序或者指定用戶名的多個(gè)進(jìn)程發(fā)送信號,格式為killall -user -signal name

總結(jié)

以上是生活随笔為你收集整理的1-10:学习shell之进程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。