1. 程式人生 > >Linux 中的普通程序、後臺程序、守護程序

Linux 中的普通程序、後臺程序、守護程序

1、預設情況下,程序是在前臺執行的,這時就把 shell 給佔據了,我們再無法使用終端進行其它操作。

2、對於沒有互動的程序,我們希望將其在後臺啟動,可以在命令的末尾加一個 “&” 字元實現這個目的。
切換到後臺的程序稱為job。切換到後臺時會輸出相關 job 資訊,以輸出的 [1]+ 已停止 ./ngrok.sh 為例 :[1] 表示job ID,./ngrok 表示對應的命令。切換到後臺的程序,仍然可以用 ps 命令檢視,或通過 jobs 命令只檢視所有job(後臺程序)。

注:後臺程序會隨著Shell的退出而結束。

3、守護程序是一種執行在後臺的特殊程序,它擺脫了與控制終端的關係,終端關閉或丟失,不會影響守護程序的正常執行。守護
程序通常週期性地執行在系統中,等待某種事件的發生,為使用者提供某種服務。例如 FTP 服務、web 服務等,守護程序通常在系統開機時自動啟動。

如果一個程序永遠都是以後臺方式啟動,並且不能受到Shell退出影響而退出,通常將其建立為守護程序(daemon),類似Windows服務。

程序檢視命令:
守護程序:ps -x
普通程序:ps 或 帶引數的其他ps命令
後臺程序:jobs 或 前面的上述的那些命令

& :這個用在一個命令的最後,可以把這個命令放到後臺執行

ctrl + z :可以將一個正在前臺執行的命令放到後臺,並且暫停

jobs :檢視當前有多少在後臺執行的命令

fg :將後臺中的命令調至前臺繼續執行
  如果後臺中有多個命令,可以用 fg %jobnumber 將選中的命令調出,%jobnumber是通過jobs命令查到的後臺正在執行的命令的序號(不是pid)

bg :將一個在後臺暫停的命令,變成繼續執行
如果後臺中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後臺正在執行的命令的序號(不是pid)