在linux系統中在後臺以作業形式執行命令

eric0435發表於2013-08-23
在linux系統中在後臺以作業形式執行命令
透過給命令列附加一個"&"字元,任何指定的命令也可以在後臺執行.通常,只有那些不需要鍵盤輸入而且不
會生成大量輸出的長時間執行的命令才適合在後臺執行.當bash shell在後臺執行命令時,該命令被稱為作
業(job),被分配一個作業號碼.

[root@sidatabase oradata]# cp system20130708.dmp / > cp.txt 2> /dev/null &
[1] 20629

在後臺啟動作業後,bash shell向使用者報告了兩條資訊:第一條是作業號碼,出現在方括號中;
第二條是後臺作業的程式id.上面的資訊說明該作業的作業號碼為1,cp命令的程式id為20629

用jobs命令列出當前作業
[root@sidatabase /]# jobs
[1]+  Running                 cp -i system20130708.dmp / > cp.txt 2> /dev/null &  (wd: /oracle/oradata)
他的每個後臺作業都和作業號碼一起列出.最新操作的作業被作為當前作業,在jobs命令輸出中用一個"+"修飾.

用fg命令把作業置於前臺
可以用fg內建命令把後臺作業置於前臺執行.fg命令用作業號作為引數,如果沒有提供任何作業號碼,將在前臺執行當前
作業.
[root@sidatabase oradata]# fg 1
cp -i system20130708.dmp / > cp.txt 2> /dev/null

cp -i system20130708.dmp / > cp.txt 2> /dev/null正在前臺執行,因此,當程式仍在執行時,shell不會傳送列印提示
符.

用ctrl+z掛起前臺作業
ctrl+z控制組合鍵是掛起程式的一種方法.當使用者掛起前臺命令時,仔細觀察bash shell的輸出,會發現bash shell把任何
掛起的前臺程式都看成作業.

[root@sidatabase oradata]# fg 1
cp -i system20130708.dmp / > cp.txt 2> /dev/null
^Z
[1]+  Stopped                 cp -i system20130708.dmp / > cp.txt 2> /dev/null
[root@sidatabase oradata]# jobs
[1]+  Stopped                 cp -i system20130708.dmp / > cp.txt 2> /dev/null

[root@sidatabase oradata]# ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      3297  0.0  0.0   4056   544 tty2     Ss+  Aug09   0:00 /sbin/mingetty
root      3299  0.0  0.0   4056   540 tty3     Ss+  Aug09   0:00 /sbin/mingetty
root      3301  0.0  0.0   4056   540 tty4     Ss+  Aug09   0:00 /sbin/mingetty
root      3303  0.0  0.0   4056   540 tty5     Ss+  Aug09   0:00 /sbin/mingetty
root      3305  0.0  0.0   4056   544 tty6     Ss+  Aug09   0:00 /sbin/mingetty
root      3345  0.0  0.0 129680 25964 tty1     Ss+  Aug09   5:39 /usr/bin/Xorg :
root      6828  0.0  0.0 108452  1932 pts/0    Ss   08:46   0:00 -bash
root     25925 37.0  0.0 113636   896 pts/0    T    11:12   1:36 cp -i system201
root     27324 12.0  0.0 110232  1168 pts/0    R+   11:16   0:00 ps u

當程式被掛起(即被停止)時,被分配給一個作業號碼(如果沒有的話),並被置於後臺.jobs命令把該作業報告成"停止的"
作業.ps命令確定程式處於停止(掛起)狀態.

重新啟動掛起在後臺的作業
掛起在後臺的作業可以用bg內建命令重新啟動.像fg命令一樣,bg命令把作業號碼作為引數,或者,如果沒有提供任何
作業號碼,就使用當前作業
[root@sidatabase oradata]# bg 1
[1]+ cp -i system20130708.dmp / > cp.txt 2> /dev/null &
[root@sidatabase oradata]# jobs
[1]+  Running                 cp -i system20130708.dmp / > cp.txt 2> /dev/null &
[root@sidatabase oradata]#

作業號碼1現在再次處於執行狀態

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-769148/,如需轉載,請註明出處,否則將追究法律責任。

相關文章