歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> [Linux]Job管理

[Linux]Job管理

日期:2017/3/1 13:37:35   编辑:關於Linux

當我們在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。

[ctrl]-z - 將目前工作丟到後台,並暫停

假設我正在執行一條壓縮命令,這條命令需要很長時間,如下所示:
[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 - 查看當前後台工作狀態

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 - 將後台工作放到前台

fg %jobnumber
# fg %1
tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1

bg - 改變後台工作為running

[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 &

nohup - 脫機運行

從上面我們可以知道,在命令的後面加上&可以讓它在後台運行,但一旦你退出或注銷了終端(exit),該命令將終止。如果你想要你的命令在退出或注銷後還能運行,則必須得在命令的前面加上nohup才行。
nohup [命令] -- 脫機前台運行
nohup [命令] & -- 脫機後台運行
Copyright © Linux教程網 All Rights Reserved