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技術的優質平台!