shell前景(foreground)與shell背景(background):
在一個shell中,所謂的「前景程序」,是說該程序在執行時會把執行的過程顯示在螢幕上讓使用者能掌控進度,但同時,使用者也無法再進行下一個指令,必須等到此程序告一段落。而所謂的「背景程序」便不同了,該程序在執行時不會把過程顯示在螢幕上(只顯示執行結果),而使用者可以在程序進行的同時輸入其他指令(產生其他程序),而程序間不會互相干擾。
※ 註:背景程序無法用按<ctrl>+<c>終止。
(1) 執行指令時,可將此該指令會產生的程序設定為背景程序,其寫法是在欲輸入的指令後方加一個空白字元和一個&符號,即是:
指令 &
例如,今有一個名為file1的檔案,要將之複製到名為dir1的資料夾中,若file1所占容量很大,則複製起來必會花不少時間。則可以輸入:
cp -p file1 dir1 &
便可將這個程序移到背景中處理,以免複製的過程佔用到螢幕。
上例指令執行之後,螢幕會顯示一行資訊,如:
[1] 20451
其中,用[]包起來的1,指的是該背景程序的「編號」。
而後面的20451,指的是這個程序的PID。
(2) 將當前正在執行的前景程序放入背景執行:
按下<ctrl>+<z>即可。
(3) 查看目前有哪些背景程序:
使用 jobs 選項。其中,選項有:
※ -l:表示要顯示出背景程序的PID。
※ -r:表示只需要顯示目前正在執行中的背景程序。
※ -s:表示只需要顯示目前已經暫停執行的背景程序。
輸入後,會顯示出背景程序的資料(每一行代表一個背景程序),例如:
[1]+ 20583 Stopped vim kkk
說明如下:
[1] |
表示此程序的編號是1。 |
+ |
加號+表示這個程序是最近第一個被加入到背景的程序,若為減號-表示這個程序是最近第二個被加入到背景的程序。 |
20583 |
這是該程序的PID。 |
Stopped |
該程序的狀態。Stopped代表暫停執行,Running代表執行中。 |
vim kkk |
這是產生此程序的指令碼。 |
(4) 將目前正在背景中的程序,拿回前景來處理:
fg %N
其中,N是程序的編號。即是jobs指令所顯示的資料中,[]內的數字。此指令可以將編號N的背景程序拿回前景來處理。
(5) 執行目前在背景中暫停的程序(程序仍在背景,只是由Stopped改為Running):
bg %N
其中,N是程序的編號。此指令可以執行編號N的背景程序。
(6) 強制刪除目前正在背景中的程序,並終止其執行:
kill -9 %N
其中,N是程序的編號。此指令可以強制刪除編號N的背景程序。
※註:kill這個指令可以管理的不只背景程序,更多的用法之後將會說明。
留言列表