理解的shell父子關係
- 2021 年 4 月 8 日
- 筆記
今天我們談談linux系統的shell的父子關係,因為大家對手機都比較熟悉,手機本身也是一個linux主機,所以我們今天就拿手機來舉個例子。
首先就是創建一個新的shell,你可以把它理解成一個手機打開了一個軟體,但是在linux打開一個「軟體」沒有那麼容易,這就需要用到兩種方法。
方法一:在CLI提示符用/bin/bash或bash創建一個shell。
圖1-1
可以看到第一個bash的進程號為2022927;第二個bash的進程號為為2023167;這樣說也不是特別明顯,我們用ps -forest命令看看
圖1-2
從圖1-2中可以直觀的看到第二個bash是第一個bash的一個子進程;可以與圖1-1的進程做一下對比
方法二:在CLI提示符後用(命令;命令;命令;)創建一個shell。
圖1-3
從圖1-3我們可以看到返回了一個1,則證明我們的子shell是成功的。推出shell也是非常容易的輸入命令exit就可以了。
當Linux運行著一個shell是你也可以說:「運行著一個進程”,所以」進程「=」shell「。
shell的用法:
一:後台
圖1-4
圖1-4我們在子shell下運行了一個sleep並將其放入了後台,他得進程號為2026627我們現在退出此進程如圖1-5。
圖1-5
二:協程
由一個或多個語句塊組成。它負責完成某項特定任務,而且相較於其他程式碼,具備相對的獨立性。我可以將子常式理解為一個函數。
例如圖1-6,用coproc創建了一個協程zz,jobs可以查看後台作業。