當(dāng)我們?cè)诮K端或控制臺(tái)工作時(shí)赚瘦,可能不希望由于運(yùn)行一個(gè)作業(yè)而占住了屏幕,因?yàn)榭赡苓€有更重要的事情要做枷邪,比如閱讀電子郵件榛搔。對(duì)于密集訪問(wèn)磁盤(pán)的進(jìn)程诺凡,我們更希望它能夠在每天的非負(fù)荷高峰時(shí)間段運(yùn)行(例如凌晨)。為了使這些進(jìn)程能夠在后臺(tái)運(yùn)行践惑,也就是說(shuō)不在終端屏幕上運(yùn)行腹泌,有幾種選擇方法可供使用。
&
當(dāng)在前臺(tái)運(yùn)行某個(gè)作業(yè)時(shí)尔觉,終端被該作業(yè)占據(jù)凉袱;可以在命令后面加上& 實(shí)現(xiàn)后臺(tái)運(yùn)行。例如:sh test.sh &
適合在后臺(tái)運(yùn)行的命令有f i n d、費(fèi)時(shí)的排序及一些s h e l l腳本专甩。在后臺(tái)運(yùn)行作業(yè)時(shí)要當(dāng)心:需要用戶交互的命令不要放在后臺(tái)執(zhí)行钟鸵,因?yàn)檫@樣你的機(jī)器就會(huì)在那里傻等。不過(guò)涤躲,作業(yè)在后臺(tái)運(yùn)行一樣會(huì)將結(jié)果輸出到屏幕上棺耍,干擾你的工作。如果放在后臺(tái)運(yùn)行的作業(yè)會(huì)產(chǎn)生大量的輸出种樱,最好使用下面的方法把它的輸出重定向到某個(gè)文件中:
command > out.file 2>&1 &
1
這樣蒙袍,所有的標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都將被重定向到一個(gè)叫做out.file 的文件中。
PS:當(dāng)你成功地提交進(jìn)程以后嫩挤,就會(huì)顯示出一個(gè)進(jìn)程號(hào)害幅,可以用它來(lái)監(jiān)控該進(jìn)程,或殺死它岂昭。(ps -ef | grep 進(jìn)程號(hào) 或者 kill -9 進(jìn)程號(hào))
nohup
使用&命令后以现,作業(yè)被提交到后臺(tái)運(yùn)行,當(dāng)前控制臺(tái)沒(méi)有被占用佩抹,但是一但把當(dāng)前控制臺(tái)關(guān)掉(退出帳戶時(shí))叼风,作業(yè)就會(huì)停止運(yùn)行。nohup命令可以在你退出帳戶之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程棍苹。nohup就是不掛起的意思( no hang up)无宿。該命令的一般形式為:
nohup command &
如果使用nohup命令提交作業(yè),那么在缺省情況下該作業(yè)的所有輸出都被重定向到一個(gè)名為nohup.out的文件中枢里,除非另外指定了輸出文件:
nohup command > myout.file 2>&1 &
使用了nohup之后孽鸡,很多人就這樣不管了,其實(shí)這樣有可能在當(dāng)前賬戶非正常退出或者結(jié)束的時(shí)候栏豺,命令還是自己結(jié)束了彬碱。所以在使用nohup命令后臺(tái)運(yùn)行命令之后,需要使用exit正常退出當(dāng)前賬戶奥洼,這樣才能保證命令一直在后臺(tái)運(yùn)行巷疼。
ctrl + z
可以將一個(gè)正在前臺(tái)執(zhí)行的命令放到后臺(tái),并且處于暫停狀態(tài)灵奖。
Ctrl+c
終止前臺(tái)命令嚼沿。
jobs
查看當(dāng)前有多少在后臺(tái)運(yùn)行的命令。
jobs -l選項(xiàng)可顯示所有任務(wù)的PID瓷患,jobs的狀態(tài)可以是running, stopped, Terminated骡尽。但是如果任務(wù)被終止了(kill),shell 從當(dāng)前的shell環(huán)境已知的列表中刪除任務(wù)的進(jìn)程標(biāo)識(shí)擅编。
2>&1解析
command >out.file 2>&1 &
command>out.file是將command的輸出重定向到out.file文件攀细,即輸出內(nèi)容不打印到屏幕上箫踩,而是輸出到out.file文件中。
2>&1 是將標(biāo)準(zhǔn)出錯(cuò)重定向到標(biāo)準(zhǔn)輸出谭贪,這里的標(biāo)準(zhǔn)輸出已經(jīng)重定向到了out.file文件境钟,即將標(biāo)準(zhǔn)出錯(cuò)也輸出到out.file文件中。最后一個(gè)&俭识, 是讓該命令在后臺(tái)執(zhí)行吱韭。
試想2>1代表什么,2與>結(jié)合代表錯(cuò)誤重定向鱼的,而1則代表錯(cuò)誤重定向到一個(gè)文件1理盆,而不代表標(biāo)準(zhǔn)輸出;換成2>&1凑阶,&與1結(jié)合就代表標(biāo)準(zhǔn)輸出了猿规,就變成錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出.