現在的位置: 首頁 > 演算法 > 正文

Linux前後台作業是什麼? Linux前後台作業有哪些常用命令

2020年05月25日 演算法 ⁄ 共 3299字 ⁄ 字型大小 評論關閉

  Linuxbashshell單一終端界面下,我們經常需要管理或同時完成多個作業,如一邊執行編譯,一邊實現數據備份,以及執行SQL查詢等其他的任務。所有的上述的這些工作我們可以在一個bash內實現,也就是說在同一個終端窗口完成。下面學步園小編來講解下Linux前後台作業是什麼?Linux前後台作業有哪些常用命令?

  Linux前後台作業是什麼

  前後台作業實際上對應的也就是前後台進程,因此也就有對應的pid。在這裡我們統稱為作業。

  無論是前台作業還是後台作業,兩者都來自當前的shell,是當前shell的子程序。

  下面是兩者的定義。

  前台作業:可以由用戶參與交互及控制的作業我們稱之為前台作業。

  後台作業:在內存可以自運行的作業,用戶無法參與交互以及使用[ctrl]+c來終止,只能通過bg或fg來調用該作業。

  Linux前後台作業有哪些常用命令

  a、command&直接讓作業進入後台運行

  b、[ctrl]+z將當前作業切換到後台

  c、jobs查看後台作業狀態

  d、fg%n讓後台運行的作業n切換到前台來

  d、bg%n讓指定的作業n在後台運行

  e、kill%n移除指定的作業n

  "n"為jobs命令查看到的job編號,不是進程id。

  每一個job會有一個對應的job編號,編號在當前的終端從1開始分配。

  job編號的使用樣式為[n],後面可能會跟有"+"號或者"-"號,或者什麼也不跟。

  "+"號表示最近的一個job,"-"號表示倒數第二個被執行的Job。注,"+"號與"-"號會隨著作業的完成或添加而動態發生變化。

  通過jobs方式來管理作業,當前終端的作業在其他終端不可見。

  3、演示後台作業命令

  a、直接將作業放入到後台(附加&符號)

  robin@SZDB:/tmp>tar-czvftemp.tar.gztempSYBO2SZ.dbf&

  [1]12500

  robin@SZDB:/tmp>tempSYBO2SZ.dbf

  robin@SZDB:/tmp>#此時可進行其它操作,作業一旦完成,會彈出如下的提示

  [1]+Donetar-czvftemp.tar.gztempSYBO2SZ.dbf

  robin@SZDB:/tmp>ls-hltrtemp*

  -rwxr-xr-x1robinoinstall490M2013-05-0217:48tempSYBO2SZ.dbf

  -rw-r--r--1robinoinstall174M2013-05-0217:50temp.tar.gz

  b、已經開始執行,但需要放入後台(使用[ctrl]+z)

  robin@SZDB:/tmp>tar-czvftemp2.tar.gztempSYBO2SZ.dbf

  tempSYBO2SZ.dbf

  [1]+Stoppedtar-czvftemp2.tar.gztempSYBO2SZ.dbf

  robin@SZDB:/tmp>jobs

  [1]+Stoppedtar-czvftemp2.tar.gztempSYBO2SZ.dbf

  #下面同時發布兩個作業,並且在中途按下[ctrl]+z以便將當前作業提交到後台

  robin@SZDB:/tmp>find/u02-typef-size+100000k

  robin@SZDB:/tmp>find/-typef-size+100000k

  #再次查看當前的jobs時,jobs管理器里出現了3個處於stopp狀態的job

  robin@SZDB:/tmp>jobs

  [1]Stoppedtar-czvftemp2.tar.gztempSYBO2SZ.dbf

  [2]-Stoppedfind/-typef-size+100000k

  [3]+Stoppedfind/u02-typef-size+100000k

  robin@SZDB:/tmp>jobs-l#使用-l參數查看當前shell下所有的作業以及對應的jobnumber,進程pid

  [1]32682Stoppedtar-czvftemp2.tar.gztempSYBO2SZ.dbf

  [2]-32687Stoppedfind/u02-typef-size+100000k

  [3]+32707Stoppedfind/-typef-size+100000k

  #下面通過pid可以查看到對應的進程信息

  robin@SZDB:/tmp>ps-ef|grep32707|grep-vgrep

  robin3270732095009:48pts/100:00:00find/-typef-size+100000

  robin@SZDB:/tmp>tty#當前終端的信息為pts/1

  /dev/pts/1

  #打開另外一個終端

  robin@SZDB:~>tty

  /dev/pts/3

  robin@SZDB:~>jobs#此時可以看到jobs命令無任何返回

  robin@SZDB:~>ps-ef|grep32707|grep-vgrep#僅僅根據進程id可以找到對應的作業

  robin3270732095009:48pts/100:00:00find/-typef-size+100000

  #由上可知,對於當前shell下的jobs,僅當前shell(終端)可見

  c、將後台作業切換到前台(fg命令)

  robin@SZDB:/tmp>fg#省略Jobnumber的情形,則將預設的job切換到前台

  find/-typef-size+100000k

  /u02/database/old/CNMMBOBK/undo/undotbsCNMMBOBK.dbf

  ......

  [ctrl]+z

  robin@SZDB:/tmp>fg%1

  tar-czvftemp2.tar.gztempSYBO2SZ.dbf

  robin@SZDB:/tmp>jobs

  [2]-Stoppedfind/u02-typef-size+100000k

  [3]+Stoppedfind/-typef-size+100000k

  d、運行後台中暫停的作業(bg命令)

  #前面有2個job處於stopped狀態,現在我們讓其在後台運行,直接輸入bg命令則預設的job繼續運行,否則輸入job編號,運行指定的job

  robin@SZDB:/tmp>bg2#輸入bg2之後,可以看到原來的命令後被追加了&

  [2]-find/u02-typef-size+100000k&

  robin@SZDB:/tmp>jobs

  [2]-Runningfind/u02-typef-size+100000k&

  [3]+Stoppedfind/-typef-size+100000k

  e、移除指定的作業n(kill)

  robin@SZDB:/tmp>jobs

  [3]+Stoppedfind/-typef-size+100000k

  robin@SZDB:/tmp>kill-9%3#強制終止job3,注意,此處的%不可省略

  robin@SZDB:/tmp>jobs

  [3]+Killedfind/-typef-size+100000k

  robin@SZDB:/tmp>jobs

  #kill-9表明強制終止指定的Job,-15則表明是正常終止指定的job。kill-l則列出kill能夠使用的所有信號

  #對於上述命令的詳細幫助,使用mancommand來獲取幫助信息

  f、帶參shell腳本的後台處理

  #下面是一個測試用的shell腳本

  robin@SZDB:~/dba_scripts/custom/bin>moreecho_time.sh

  #!/bin/bash

  以上就是關於「Linux前後台作業是什麼?Linux前後台作業有哪些常用命令」的內容,希望對大家有用。更多資訊請關注學步園。學步園,您學習IT技術的優質平台!

抱歉!評論已關閉.