Linux作業管理,linux作業

來源:互聯網
上載者:User

Linux作業管理,linux作業

在介紹作業管理之前需要Crowdsourced Security Testing道,作業管理是在bash環境下使用的。也就是說“當登入系統擷取bash shell之後,在單一終端介面下,同時管理多個作業”。這樣應該瞭解到:管理作業時,其實每個作業都是當前bash的子程式,即彼此之間是有關聯的。我們無法以作業管理的方式由tty1的環境去管理tty2bash

直接將命令放到後台“執行”的&

bash的環境下, 前台指:你可以控制的作業。後台指:在記憶體可以自行啟動並執行作業,你無法直接控制它,除非以bg/fg等命令將該作業調用出來。

範例:

[root@redflag ~]# tar –zpcf /tmp/etc.tar.gz /etc &[1] 24874  <== [job number] PID[root@redflag ~]#     <==可以繼續工作,不受影響。

這裡job1在後台繼續工作,你可在前台繼續操作linux。過了一會,會突然出現這個資料:

[1] + Done        tar –zpcf  /tmp/etc.tar.gz /etc  #這是表示[1]作業已經完成

該命令最大的好處就是不怕被“[Ctrl]+c”這個中斷指令來中斷了
這裡就會出現一個問題,如果上面的命令是

[root@redflag ~]# tar –zpcvf /tmp/etc.tar.gz /etc &

這時在後台執行的命令,如果有stdoutstderr時,它的資料是輸出到螢幕上,所以我們無法看到提示符,也就無法完好地控制前台作業。所以,最好是使用資料流重導向,將輸出資料傳至某個檔案中。我們可以這樣做:

        [root@redflag ~]# tar –zpcvf  /tmp/etc.tar.gz  /etc > tpm/log.txt  2>&1  &

這樣,資料都傳送到/tmp/log.txt中,自然不會影響到前台作業。

將“當前”作業放到後台“暫停”:[crtl]+Z

如果你進行中vi,但你想尋找某個檔案,需要到bash環境搜尋。此時你可以暫時離開vi

[root@redflag ~]# vi ~/.bashrc   # 在vi 的一般模式下,按ctrl+z[1]+  Stopped      /usr/bin/vim ~/.bashrc  #(+)表示當前在後台下預設的作業[root@redflag ~]#   <== 擷取了前台的控制權
觀察當前後台作業狀態:jobs
[root@redflag ~]# jobs [-lrs]  參數:   -l:除了列出作業號之外,同時列出PID   -r:僅列出正在後台啟動並執行作業   -s:僅列出正在後台暫停作業

範例:

  [rot@redflag ~]# jobs –l  [1]+ 24988 Stopped     /usr/bin/vim ~/.bashrc  [2]- 25006 Stopped     /usr/bin/vim ~/.bash_history

一般來說,直接執行jobs即可。在上面的輸出中,有(+ -)號。(+)表示預設的作業。所以說“當前我有兩個作業在後台,兩個作業都是暫停,如果我僅輸入fg時,那麼[1]會被拿到前台處理”

將後台作業拿到前台處理,fg
   [root@redflag ~]# fg %jobnumber

範例:

   [root@redflag ~]# jobs   [1]+ 24988 Stopped     /usr/bin/vim ~/.bashrc   [2]- 25006 Stopped     /usr/bin/vim ~/.bash_history   [root@redflag ~]# fg   <==預設取出+的作業,即[1]   [root@redflag ~]# fg %2 <==直接規定取出的作業號碼
作業在後台運行:bg

之前都是將作業放到後台去“暫停”,而bg實現一個作業在後台運行。

   [root@redflag ~]# find / -perm +7000   #此時,請立刻按ctrl+z暫停   [1]+ stopped       find / -perm +7000   [root@redflag ~]#    [root@redflag ~]# jobs ; bg %1 ; jobs   [1]+ Stopped         find / -perm + 7000   [1]+ find / -perm +7000 &   [1]+ Running         find / -perm +7000 &

此時Stopped變成了Running,命令列的最後多了一個&符號,表示該作業在後台啟動了。
注意:1-5操作過程中“%jobnumber”可以將“%”省略直接加jobnumber即可。

管理後台作業:kill
   [root@redflag ~]# kill –signal %jobnumber   [root@redflag ~]# kill –l    參數:    -l:列出當前kill能夠使用的訊號(注意是小寫L)    -1:重新讀取一次參數的設定檔案(類似reload)   ---對應的訊號為SIGHUP    -2:表示與由鍵盤輸入ctrl+c同樣的動作         ---對應的訊號為SIGINT    -9:立刻強制移除一個作業                    ---對應的訊號為SIGKILL    -15:以正常方式終止一項作業                 ---對應的訊號為SIGTERM     [root@redflag ~]# jobs    [1]+ Stopped         vim bashrc   [root@redflag ~]# kill -9 %1             #以強制方式刪除   [1]+ 已刪除          vim bashrc        [root@redflag ~]# kill –SIGTERM %1      #-SIGTERM與15是一樣的

說明一下以正常方式與強制方式來終止作業的區別:例如,用vi編輯檔案的時候會產生一個.filename.swp檔案,如果以正常方式來結束作業,那麼.filename.swp檔案會主動被刪除;相反以強制的方式來結束作業,那麼.filename.swp檔案會繼續存在檔案系統中。
注意:kill可以幫我們將訊號傳送給某個作業(%jobnumber)或者是某個PID(直接輸入數字),也就是說,kill後面直接加數字與加上%的情況是不同的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.