背景執行程式

Linux上讓程式背景執行的方法

Linux上有些指令的運作時間比較長,我們會希望他在背景執行,好讓我們同時間可以處理其他事情,這種情況下,我們可以在指令最後加上 & 讓程式放在背景執行。

例如我用find指令從根目錄搜尋符合"the file"的檔案
find / -name "the file" &

系統就會顯示放入背景執行的程式PID,而你的Console可以繼續輸入指令。

恢復成前景執行
要把背景執行中的程式,到前景時則是輸入
fg

察看背景執行的程式清單與狀態
輸入jobs就能夠
jobs #顯示程式狀態與執行的指令
jobs -l #比jobs多顯示PID
jobs -r #顯示Running狀態的程式
jobs -s #顯示Stopped狀態的程式


因為jobs是shell指令,要看jobs指令的用法要輸入
help jobs

針對已經正在執行的程式
如果已經在執行的可以先按Ctrl+z暫停程式執行,Console會顯示你的程式變成Stopped狀態,然後輸入bg讓程式變成背景執行。
bg

如果Ctrl+z之後沒有要放到背景執行的話,可以直接輸入fg,讓程式恢復Running狀態。

遠端狀況下的背景執行

使用ssh的時候會希望ssh session關閉後程式還能運作,這時候就要用nohup來避免中斷程式
因為nohup執行程式時的輸出會直接到nohup.out中,所以要跑多個程式最好自己指定螢幕輸出的檔案
nohup your_command &>myout.txt &

參考資料
http://dragonspring.pixnet.net/blog/post/33257496-%5Blinux%5Btips%5Dnohup:-%E8%AE%93command%E5%9C%A8%E9%81%A0%E7%AB%AF%E5%9F%B7%E8%A1%8C%EF%BC%8C%E4%B8%8D%E5%9B%A0%E7%99%BB%E5%87%BA

留言