日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1-10:学习shell之进程

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1-10:学习shell之进程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

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

前言

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

Linux進程

本章需要用到的命令如下

  • ps:顯示當前所有進程的運行情況
  • top:相當于資源管理器
  • jobs:列出所有活動作業的狀態信息
  • bg:設置在后臺中運行作業
  • fg:設置在前臺中運行作業
  • kill:發送信號給某個進程
  • killall:殺死指定名字的進程
  • shutdown:關機或重啟系統

一:進程如何工作

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

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

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

如果直接輸入ps命令,將會輸出和當前終端會話相關的進程信息

  • TTY代表了進程的控制終端
  • TIME表示了進程消耗CPU的時間總和

如果在ps后面跟上選項x,也就是ps x,表示告知ps命令顯示所有的進程無需關注他們是由哪個終端控制的(因為有可能有多個用戶在使用電腦,所以TTY顯示為問號)

  • 上圖中,多列出一個選項STAT,它是state的縮寫,表示了進程狀態。關于進程狀態我在前言的那篇文章中也做了深入的探究。

    還有一個常用的選項是aux,也就是ps aux,該選項會輸出每個用戶的進程信息,并且輸出的信息更加豐富
  • 上圖中,列表標題的含義如下

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

top命令相較于ps命令而言,top可以動態顯示進程的信息,默認每3s更新一次
它主要查看的是最高進程的運行狀況

  • 整張圖分為兩個部分,上半部分顯示的是系統總體狀態信息,下半部分顯示的是一張按照CPU活動排序的進程情況表

其中系統總體狀態信息顯示的內容非常有用,主體注解與參考如下(標號對應)


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

二:控制進程

為了方便演示,我們在終端中輸入xlogo,xlogo是由X窗口系統提供的一個實例程序,它簡單地顯示了一個包含X標識的可縮放窗口

(1)中斷進程

X窗口打開的情況下,可以發現終端的shell提示符并沒有返回,那是因為這個進程正在運行當中。如果在終端中輸入Ctrl+C,那么這個進程將會被終端,并且shell提示符返回

  • 需要注意后臺進程是無法用這種方式終端的,這一點后面會講到

(2)使進程在后臺運行

可以發現在xlogo運行期間,我們是無法對終端進行其他操作的,所以如果想要讓進程不要在前臺運行,可以在命令后面加入&,也即是xlogo &,這樣的話進程將會轉到后臺運行,效果就是我們仍然能在終端中輸入其他命令

大家還可以發現另外有趣的一點:當把輸入xlogo &后,終端顯示了【1】4467這樣的字樣,這種表現其實專業術語叫做shell的作業控制,轉到后臺后,shell會告訴你已經啟動作業編號【1】,對應PID為4467

如果輸入ps命令,可以發現除了前面講過的那兩條基本進程外,此時還多了一個咋們剛才轉到后臺運行的xlogo進程,而且其PID恰好就是4467

如果想要查看由該終端啟動的所有作業(也就是后臺進程),可以輸入jobs

(3)fg-使進程回到前臺運行

后臺運行的程序是無法使用Ctrl+C中斷的。如果要使得后臺進程轉到前臺運行,可以使用fg命令,在fg后面加上百分號和作業編號,也就是fg %1

(4)暫停進程

前臺啟動xlogo后,如果此時按下Ctrl+Z,那么進程將被暫停,同時終端提示已停止,該進程會被轉到后臺

三:信號

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

但是kill命令的用法并不只是這么簡單,準確點來說kill的含義是發送信號給進程,使用kill -l可以發現kill可以發送的信號有這么多

A:使用kill命令發送信號到進程

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

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

B:使用killall命令發送信號給多個進程

使用killall命令可以給指定程序或者指定用戶名的多個進程發送信號,格式為killall -user -signal name

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。