當我們在Linux Bash下執行命令(如tar),默認都是在前台進行的,即我們必須得等到命令結束之後才能執行後續的命令。事實上,我們是可以控制命令在後台執行,這就是Linux的Job管理。
在執行命令的最後加上&,就表示把該命令丟到後台執行,如下所示:
# tar -zcvf source.tar.gz ./source > /tmp/source_tar.log 2>&1 & [1] 10015注意1:雖然我們把job放到後台了,到它的標准輸出和標准錯誤輸出還是依然會干擾到前台,所以一般情況行,對於後台的job,都采用輸出重定向,把輸出信息寫到文件裡,已免干擾到前台的工作。
注意2:當把命令丟到後台後,屏幕將顯示一行信息(如上所示的第2行),第1列代表job number,第2列代表PID。
[root@lx15 /opt ]# tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1這時如果我按下[ctrl] - z,將會把該工作丟到後台去,並暫停,如下所示:
[1]+ Stopped tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1
jobs [-lrs] -l:列出job的詳細信息 -r:僅列出狀態為run的job -s:僅列出狀態為stop的job [root@lx15 /opt ]# jobs -l [1]+ 10647 Stopped tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1
fg %jobnumber # fg %1 tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1
[root@lx15 /opt ]# jobs [1]+ Stopped tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1 [root@lx15 /opt ]# bg %1 [1]+ tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1 & [root@lx15 /opt ]# jobs [1]+ Running tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1 &