1. 概念區分
1. 前台程序:程序預設是前台運作的,會占據shell控制台,使用者無法做其他操作。可以使用‘&’将前台程序轉為背景程序
2. 背景程序:切為背景程序稱為job,[4] 是job ID , 5094是PID,
1)jobs -l / ps 可以檢視背景程序
2)背景程序是依賴控制台的,控制台關閉,相關的背景程序關閉
3)fg 1将job ID 為1的程序調到前台來運作
4)bg 将一個在背景暫停的指令,變成繼續執行 如果背景中有多個指令,可以用bg jobID
3. 守護程序:守護程序顧名思義,主要用于一些長期運作,守護着自己的職責(監聽端口,監聽服務等)。守護程序成為了程序組長(或者會話組長),和控制終端失去了聯系(其檔案描述符也是繼承于父程序的,但是在變成守護程序的同時stdin,stdout,stderr和控制台失去聯系了)
2. 将程式以守護程序的方式運作
把/dev/null 看作"黑 洞" . 它非常等價于一個隻寫檔案. 所有寫入它的内容都會永遠丢失. 而嘗試從它那兒讀取内容則什麼也讀不到。
chmod 755 (屬主7,組權5,其他使用者的權限5)
umask 022 設定新建立檔案和目錄的預設權限,用的是補碼的方式,也就是檔案權限為644 (6-0, 6-2, 6-2),目錄的權限為755(7-0,7-2,7-2)
os.umask(0) #修改檔案模式,讓程序有最大權限,保證程序有讀寫執行權限,這個不是一個好的方法。
os.setsid() #該方法做一系列的事:首先它使得該程序成為一個新會話的上司者,接下來它将程序轉變一個新程序組的上司者,#最後該程序不再控制終端, 運作的時候,建立一個程序,linux會配置設定個程序号。然後調用os.fork()建立子程序。若pid>0就是自己,自殺。子程序跳過if語句,通過os.setsid()成為linux中的獨立于終端的程序。
os.dup2将系統輸入、輸出、錯誤的輸出均輸出到/dev/null中。