多任務運行 bg / fg / nohup / kill - 筆記1

Linux是支持多任務運行的。

而且,可以將任務丟入後臺運行,例如:

[root@www ~]# tar -zpcf /tmp/etc.tar.gz /etc &

[1] 8400 <== [job number] PID

當tar指令完成後,會顯示[1]+ Done tar -zpcf /tmp/etc.tar.gz /etc

在背景當中執行的指令,如果有 stdout 及 stderr 時,他的數據依舊是輸出到屏幕上面 的, 所以,我們會無法看到提示字符,當然也就無法完好的掌握前景工作。同時由於是背景工作的tar,此時你怎麼按下 [ctrl]+c 也無法停止屏幕被搞的花花綠綠的!所以囉,最佳的狀況就是利用數據流重導向, 將輸出數據傳送至某個檔案中。舉例來說,我可以這樣做:

 [root@www ~]# tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 & 

[1] 8429

這樣就能數據流重導向啦,避免影響當前作業。

如果在當前指令界面,按ctrl+z,則當前指令會進入後臺且狀態會變爲stop狀態看,例如:

[root@www ~]# vi ~/.bashrc

# 在 vi 的一般模式下,按下 [ctrl]-z 這兩個按鍵,則會提示:[1]+ Stopped vim ~/.bashrc,其中的“+號”表示是最後丟入後臺的程序,如果前臺用fg指令,則有+號的程序會被調用。

fg指令,將後臺程序送到前臺來

bg指令,將前臺程序放到後臺去執行,與ctrl+z不同之處是,被bg的指令在後臺狀態是running

nobup指令,脫機後保持程序在終端機繼續執行,其與at的區別,at是將程序放入系統背景中執行,與終端機無關。

kill指令,給程序發送信號,用以啓動或結束程序,常見kill -1 啓動/-9 強制結束 -15 正常流程結束程序





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章