工作管理


		jobs		觀察目前的背景工作狀態。

bg 讓工作在背景執行。
fg 將背景工作拿到前景處理。
kill 管理背景中的工作。

  1. 直接背景執行程式:「&」:
    [root@dywOffice ~]# command & 
    
    [root@dywOffice ~]# find / -name testing & %*<==將該執行程序丟到背景執行 *)
    [root@dywOffice ~]# fg                      %*<==將該程序叫回螢幕前執行*)
    
  2. 將執行中的程式丟到背景暫停:「[Ctrl]+z」:
    [root @test /root ]# command 
    [root @test /root ]# ^Z          %*<==按下[Ctrl]加上 z 鍵 *)
    
    [root @test /root]# vi .bashrc 
    ^Z                             %*<==在 vi 當中的一般模式中鍵入[Ctrl]+z *)
    [1]+  Stopped                 vi .bashrc    %*<==顯示將資料丟到背景當中 *)
    
  3. jobs:觀察目前的背景工作狀態。
    [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  %*<==顯示有一個工作在背景下,狀態為停止。*)
    
  4. echo $!:查看最後一個背景工作 PID 及狀態。
    [root@dywHome2 tmp]# vi foo1 &
    [1] 7559
    [root@dywHome2 tmp]# vi foo2 &
    [2] 7560
    
    [1]+  Stopped                 vi foo1
    [root@dywHome2 tmp]# jobs
    [1]-  Stopped                 vi foo1
    [2]+  Stopped                 vi foo2
    [root@dywHome2 tmp]# echo $!
    7560
    
  5. bg:讓工作在背景執行。
    [root @test /root ]# bg %number 
    參數說明: 
    %number :number 為數字,表示 jobs 的工作代號 
    
    #範例: 
    [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
    
  6. fg:將背景工作拿到前景處理。
    [root @test /root ]# fg %number 
    參數說明: 
    %number :number 為數字,表示 jobs 的工作代號 
    
    #範例:延續前例,將編號 2 的背景工作,拿到前景處理 
    [root @test /root]# fg %2    %*<==進入 vi 畫面。*)
    
  7. kill:管理背景中的工作。
    [root @test /root ]# kill -sigal %number 
    參數說明: 
    %number :背景工作的代號,可使用 jobs 查詢 
    signal 
        -1  :重新讀取一次參數設定檔(類似 reload ) 
        -2  :使用者中斷該工作,類似 [Ctrl]+c 來中斷一個工作 
        -9  :立刻殺掉一個工作,不論該工作是否為僵屍程序 
        -15 :停止一個工作(這是預設值) 
    
    #範例: 
    [root @test /root]# jobs 
    [1]+  Stopped                 vi .bashrc 
    [root @test /root]# kill -9 %1
    

練習題

  1. 執行程序 find / -name file1 時丟到背景執行?
    Sol. find / -name file1 &
  2. 如何將執行中的程式丟到背景暫停?
    Sol. 按下 [Ctrl] 加上 z 鍵
  3. 如何觀察目前的背景工作狀態?
    Sol. 執行指令 jobs
  4. 如何查看最後最後一個背景工作的 PID 及狀態?
    Sol. echo $!
  5. 若背景中有四個工作,如何將第二個工作移到前景執行?
    Sol. 執行指令 fg %2
  6. 若背景中有四個暫停的工作,如何將第三個工作在背景執行起來?
    Sol. 執行指令 bg %3
  7. 若背景中有四個工作,如何以 kill 指令,將第三個工作重新啟動?
    Sol. 執行指令 kill -1 %3
  8. 若背景中有四個工作,如何以 kill 指令,將第三個工作強制刪除?
    Sol. 執行指令 kill -9 %3
  9. 若背景中有四個工作,如何以 kill 指令,將第三個工作以正常結束?
    Sol. 執行指令 kill -15 %3
  10. 某程序的 PID=1234,如何送出終端機的暫停訊號給該程序?
    Sol. kill -20 1234
  11. 如何讓暫停的程序( PID=1234 )繼續執行?
    Sol. kill -18 1234
  12. 請列舉三項要做程序管理的理由。
    Sol. 1. 找出並刪除耗系統資源的程序; 2. 找出並移除有問題的程序; 3. 在同時執行的程序中,調整其優先順序。