字體:  

Linux底下 foreground 跟 background 的用法...

adj 發表於: 2007-11-29 16:52 來源: ADJ網路控股集團


取自鳥哥的私房菜:

背景工作管理:
有時後我們並不是一定要在螢幕前進行工作的,尤其是某些朋友特別不喜歡同時開啟多個視窗,會容易搞混掉!這個時候就需要使用到背景工作管理的一些指令囉!這些指令是需要同時使用的!如 &, [Ctrl]+z, bg, fg, jobs, 與 kill 等等!

CODE:


語法: [root @test /root ]# command &
參數說明:
範例:
[root @test /root]# find / -name testing &  <==將該執行程序丟到背景執行
[root @test /root]# fg                      <==將該程序叫回螢幕前執行
說明:
如果想要讓螢幕中的工作( command )在背景底下執行的時後,就使用 & 吧!不過,由於是背景執行的,所以該程序的輸出並不會顯現在螢幕上,所以需要特別留意輸出的資訊的管線重導的問題呦!另外,如何將該程序叫回來螢幕上面執行呢?就使用 fg 即可!
其他:
當然囉,也可以使用 [Ctrl]+z 來將目前正在進行當中的工作丟到背景底下!那麼擺在背景底下執行有何好處呢?!
最大的好處就是不怕被『 [Ctrl]+c 』這個中斷指令來中斷了!!

CODE:

語法: [root @test /root ]# command
[root @test /root ]# ^Z          <==按下[Ctrl]加上 z 鍵
參數說明:
範例:
[root @test /root]# vi .bashrc
^Z                               <==在 vi 當中的一般模式中鍵入[Ctrl]+z
[1]+  Stopped                 vi .bashrc    <==這裡會顯示將資料丟到背景當中了!
[root @test /root]#
說明:
如果你正在進行 vi ,而且是在編輯一個重要資料檔案,但是偏偏你想起有的程序需要留意,因此需要退出 vi ,不過,你並不想這個時候儲存退出 vi ,那麼該如何是好呢?!就將資料丟到背景裡面去吧!以上面的例子來說明,當你在執行編輯 /root/.bashrc 這個檔案時,想要暫時離開,那麼就直接在 vi 的『一般模式』當中輸入[Ctrl]加上 z (小寫)按鍵,,那麼系統就會告訴你『工作項目 [1] 在背景當中,而其狀態為[Stopped]亦即是停止的狀態!』,並且會離開 vi 進入到 command line 當中,等待使用者輸入指令!這個咚咚很好用的呦!

其他:
那如果想要回到 vi 呢?!呵呵,就需要使用 jobs 配合 bg 或 fg 囉!
jobs
語法:

CODE:

[root @test /root ]# jobs
參數說明:
範例:
[root @test /root]# vi .bashrc
^Z                               <==在 vi 當中的一般模式中鍵入[Ctrl]+z
[1]+  Stopped                 vi .bashrc    <==這裡會顯示將資料丟到背景當中了!
[root @test /root]# jobs
[1]+  Stopped                 vi .bashrc    <==顯示有一個工作在背景下,狀態為停止。
說明:
剛剛我們提到的 & 與 vi 在背景下執行,那麼你怎麼知道目前你所進行的背景底下的工作有哪些呢?!很簡單,就是使用 jobs 就可以觀察到啦!以上式為例,使用 jobs 就可以知道目前的背景中工作項目有 vi .bashrc 這一項!那個中括號([])裡面的數字就是 jobs 的代號囉!
其他:
fg 與 bg
語法:

CODE:

[root @test /root ]# fg %number
[root @test /root ]# bg %number
參數說明:
%      :後面接數字,表示 jobs 的工作代號
number :就是工作代號
範例:
[root @test /root]# find / -name test
^Z
[1]+  Stopped                 find / -name testing
[root @test /root]# vi .bashrc
^Z
[2]+  Stopped                 vi .bashrc    <==這裡會顯示將資料丟到背景當中了!
[root @test /root]# jobs
[1]-  Stopped                 find / -name testing
[2]+  Stopped                 vi .bashrc
[root @test /root]# bg %1
[root @test /root]# jobs
[1]-  Running                 find / -name testing &
[2]+  Stopped                 vi .bashrc
[root @test /root]# fg %2
進入 vi 畫面囉!
說明:
OK!那麼如何來瞭解 jobs 的背景(bg)與前景(fg)的管控呢?!這裡請注意囉!這個 bg 是將『背景當中的程式由 stopped 變成 Running 』的一個手段,至於 fg 『則是將背景中的指令移到螢幕上來動作』,那你怎麼知道你的背景當中有多少的工作(jobs)在進行呢?!就是執行 jobs 來看看背景程式的代號囉!然後以 bg %number 來將資料在背景中執行,而 fg %number 則是將代號為 number 的程式移動到螢幕前面動作!
其他:
kill
語法:

CODE:

[root @test /root ]# kill -sigal %number
參數說明:
%number :背景工作的代號,可使用 jobs 查詢
signal
    -2  :使用者中斷該工作,類似 [Ctrl]+c 來中斷一個工作
    -9  :立刻殺掉一個工作,不論該工作是否為僵屍程序
    -15 :停止一個工作(這是預設值)
範例:
[root @test /root]# jobs
[1]+  Stopped                 vi .bashrc
[root @test /root]# kill -9 %1
說明:
如果想要直接殺掉背景工作中的項目,可以直接輸入 kill 來殺掉!但是由於預設是將該程序停止而已,不見得一定可以將該工作清除乾淨,因此需要送出一個訊號,告訴系統你就是要砍掉該程序!這個時候就使用 kill -9 吧!