Linux 普通進程 後臺進程 守護進程

1、普通進程與後臺進程

默認狀況下,進程是在前臺運行的,這時就把shell給佔據了,咱們沒法進行其它操做。對於那些沒有交互的進程,不少時候,咱們但願將其在後臺啓動,能夠在啓動參數的時候加一個'&'實現這個目的:shell

zsm@wilburUbun:~/application/zookeeper-3.4.8/bin$ ./zkServer.sh start &
[1] 21304
zsm@wilburUbun:~/application/zookeeper-3.4.8/bin$ ZooKeeper JMX enabled by default
Using config: /home/zsm/application/zookeeper-3.4.8/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

[1]+  Done                    ./zkServer.sh start

切換到後臺的進程稱爲job。切換到後臺時會輸出相關job信息,之前面的輸出[1] 21304爲例:[1]表示job ID,21304表示進程ID是21304。 切換到後臺的進程,仍然能夠用ps命令查看,或經過jobs命令只查看全部job(後臺進程)。app

後臺進程會隨着Shell的退出而結束。spa

2、守護進程

若是一個進程永遠都是之後臺方式啓動,而且不能受到Shell退出影響而退出,一個正統的作法是將其建立爲守護進程(daemon)。守護進程值得是系統長期運行的後臺進程,相似Windows服務。守護進程信息經過ps –a沒法查看到,須要用到–x參數,當使code

用這條命令的時候,每每還附上-j參數以查看做業控制信息,其中TPGID一欄爲-1就是守護進程。blog

3、守護進程與後臺進程

後臺進程的文件描述符也是繼承於父進程,例如shell,因此它也能夠在當前終端下顯示輸出數據。可是daemon進程本身變成了進程組長,其文件描述符號和控制終端沒有關聯,是控制檯無關的。繼承

基本上任何一個程序均可之後臺運行,但守護進程是具備特殊要求的程序,好比要脫離本身的父進程,成爲本身的會話組長等,這些要在代碼中顯式地寫出來換句話說,守護進程確定是後臺進程,但反之不成立。 進程

4、進程查看

守護進程:ps -xio

普通進程:ps 或 帶參數的其餘ps命令class

後臺進程:jobs 或 前面的上述的那些命令後臺

5、跟系統任務相關的幾個命令

fg、bg、jobs、&、ctrl+z

1. & 最常常被用到

   這個用在一個命令的最後,能夠把這個命令放到後臺執行

2. ctrl + z

     能夠將一個正在前臺執行的命令放到後臺,而且暫停

3. jobs

     查看當前有多少在後臺運行的命令

4. fg

     將後臺中的命令調至前臺繼續運行  

  若是後臺中有多個命令,能夠用 fg %jobnumber將選中的命令調出,%jobnumber是經過jobs命令查到的後臺正在執行的命令的序號(不是pid)

5. bg 將一個在後臺暫停的命令,變成繼續執行

若是後臺中有多個命令,能夠用bg %jobnumber將選中的命令調出,%jobnumber是經過jobs命令查到的後臺正在執行的命令的序號(不是pid)

  1. jobs列舉出後臺做業信息。([做業號]   運行狀態   做業名稱)

  2. ctrl+z 將任務放到後臺去,並暫停;

  3. bg  <%int> 將後臺任務喚醒,在後臺運行;

  4. fg   <%int> 將後任務的程序放到前臺;

相關文章
相關標籤/搜索