自學Linux Shell5.1-shell父子關係

點擊返回 自學Linux命令行與Shell腳本之路html

5.1-shell父子關係

1 shell常見的種類 

  • bash是Linux標準默認的Shell,是BunrneAgain Shell的縮寫,內部命令一共有40個。
  • sh 是Bourne Shell的縮寫,sh是Unix標準默認的Shell。
  • ash 是Linux中佔用系統資源最少的一個Shell,只包含24個內部命令。
  • ksh是Kom Shell的縮寫,共有42條內部命令。
  • csh是Linux比較大的內核,共有52個內部命令。

shell啓用什麼樣的shell程序取決於我的的用戶IP配置。 能夠經過/etc/passwd查看本機所採用的shell程序。shell

2 shell 父子關係理論

用於登錄某個虛擬控制器終端或在GUI中運行終端仿真器時候所啓動的默認的交互shell就是父shell
在CLI提示符後輸入/bin/bash命令後或其餘等效的bash命令時,會建立一個新的shell,就是子shellbash

如上,第一次使用ps -f 時出現兩個進程,第一個進程的進程ID是34285,運行的是bash shell程序;第二個進程的進程ID是34295,對應的命令ps -f
輸入bash以後,一個子shell出現了,此時ps -f是在子shell中執行的。
          第一個進程的進程ID是34285,是父shell程序;第二個進程的進程ID是34295,是子shell程序;第三個進程的進程ID是39020,對應的命令ps -f
  (其中注意子shell的父進程ID/PPID是34298,是父shell進程的PID)(在生成子shell進程的時候,只有部分的父進程環境被複制到子shell環境中)命令行

子shell能夠從父shell中建立,也能夠從子shell中建立
3d

2.1 進程列表

 經過加入;能夠執行一系列命令
 在整個命令行加上()使命令列表變成了進程列表,生成了一個子shell來執行對應的命令協程

 

如何驗證是否生成了子shell,就須要使用環境變量的命令htm

 echo $BASH_SUBSHELL    若是該命令返回時0表示沒有子shell,俄國該命令返回1或者更大數字,表示存在子shellblog

2.2 子shell用法,使用後臺模式

 後臺模式: 在後臺模式下運行命令能夠在處理命令的同時讓出CLI,以供他用。
 通常演示使用sleep命令
sleep 10 表示但願進程等待10秒, 使用後回話將暫停10s後返回shell CLI提示符進程

 

 若是要想將命令在後臺模式下執行,只需在命令末尾加上&符號。資源

 

jobs命令能夠顯示出當前運行在後臺模式全部用戶的進程

將進程列表置入後臺 ,, 既能夠再子shell中進行繁重的處理工做,同事也不會讓子shell的I/O收到影響

執行(sleep 2;echo $BASH_SUBSHELL;sleep 2) 會產生1個做業號和進程ID, 而後回到提示符,且多了一個數字" 1 "
       回車,獲得另外一個提示符

2.3 協程

 在後臺生成一個子shell,並在這個子shell中執行命令。

相關文章
相關標籤/搜索