shell啓用什麼樣的shell程序取決於我的的用戶IP配置。 能夠經過/etc/passwd查看本機所採用的shell程序。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
經過加入;能夠執行一系列命令
在整個命令行加上()使命令列表變成了進程列表,生成了一個子shell來執行對應的命令協程
如何驗證是否生成了子shell,就須要使用環境變量的命令htm
echo $BASH_SUBSHELL 若是該命令返回時0表示沒有子shell,俄國該命令返回1或者更大數字,表示存在子shellblog
後臺模式: 在後臺模式下運行命令能夠在處理命令的同時讓出CLI,以供他用。
通常演示使用sleep命令
sleep 10 表示但願進程等待10秒, 使用後回話將暫停10s後返回shell CLI提示符進程
若是要想將命令在後臺模式下執行,只需在命令末尾加上&符號。資源
jobs命令能夠顯示出當前運行在後臺模式全部用戶的進程
將進程列表置入後臺 ,, 既能夠再子shell中進行繁重的處理工做,同事也不會讓子shell的I/O收到影響
執行(sleep 2;echo $BASH_SUBSHELL;sleep 2) 會產生1個做業號和進程ID, 而後回到提示符,且多了一個數字" 1 "
回車,獲得另外一個提示符
在後臺生成一個子shell,並在這個子shell中執行命令。