在命令后面加上可實(shí)現(xiàn)后臺(tái)運(yùn)行。使用示例:
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),黃陵企業(yè)網(wǎng)站建設(shè),黃陵品牌網(wǎng)站建設(shè),網(wǎng)站定制,黃陵網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,黃陵網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
但僅使用命令,當(dāng)關(guān)閉控制臺(tái)終端時(shí),任務(wù)同樣會(huì)被終止。
nohup(no hang up)命令,即忽略SIGHUP信號(hào)。nohup能保證關(guān)閉控制臺(tái)終端時(shí),任務(wù)不被終止:
關(guān)閉控制臺(tái)終端后,通過(guò)ps查看,easeapi.sh 的父進(jìn)程由終端進(jìn)程變成了init進(jìn)程,即使關(guān)閉終端,任務(wù)依然能保持運(yùn)行。nohup命令默認(rèn)會(huì)在當(dāng)前目錄創(chuàng)建nohup.out文件存儲(chǔ)輸出信息。如果要輸出到指定文件則:
nohup命令雖然簡(jiǎn)單,但在一些情況下可能并不好用。比如,想使用scp命令從需要驗(yàn)證的服務(wù)端下載文件時(shí),直接使用nohup命令并不會(huì)出現(xiàn)驗(yàn)證交互。這種情況下,推薦使用bg/fg命令。
Ctrl + C 和 Ctrl + Z是linux中兩種中斷命令,但作用有不同。Ctrl + C是強(qiáng)制中斷進(jìn)程,而Ctrl + Z則是暫停任務(wù)執(zhí)行。在終端中正常執(zhí)行scp命令,輸入賬戶密碼后,使用Ctrl + Z暫停任務(wù)。
jobs命令顯示當(dāng)前任務(wù)狀態(tài)。
可以看到任務(wù)已經(jīng)暫停,任務(wù)編號(hào)為1。
bg/fg將可將任務(wù)在前后臺(tái)切換?,F(xiàn)在將任務(wù)切換到后臺(tái):
在通過(guò)jobs查看,任務(wù)狀態(tài)已變成了running:
當(dāng)關(guān)閉終端后,任務(wù)可能會(huì)被終止??墒褂胐isown命令忽略SIGHUP信號(hào)。
1.nohup
用途:不掛斷地運(yùn)行命令。
語(yǔ)法:nohup Command [ Arg … ] [ ]
無(wú)論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當(dāng)前目錄的 nohup.out 文件中。
如果當(dāng)前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。
如果沒(méi)有文件能創(chuàng)建或打開以用于追加,那么 Command 參數(shù)指定的命令不可調(diào)用。
退出狀態(tài):該命令返回下列出口值:
126 可以查找但不能調(diào)用 Command 參數(shù)指定的命令。
127 nohup 命令發(fā)生錯(cuò)誤或不能查找由 Command 參數(shù)指定的命令。
否則,nohup 命令的退出狀態(tài)是 Command 參數(shù)指定命令的退出狀態(tài)。
2.
用途:在后臺(tái)運(yùn)行
一般兩個(gè)一起用
nohup command
eg: nohup echo hello logs/hello.log 21
當(dāng)我們?cè)诮K端或控制臺(tái)工作時(shí),可能不希望由于運(yùn)行一個(gè)作業(yè)而占住了屏幕,因?yàn)榭赡苓€有更重要的事情要做,比如閱讀電子郵件。對(duì)于密集訪問(wè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è)文件中:
這樣,所有的標(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命令提交作業(yè),那么在缺省情況下該作業(yè)的所有輸出都被重定向到一個(gè)名為nohup.out的文件中,除非另外指定了輸出文件:
使用了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í)。
21解析:
擴(kuò)展鏈接:如何寫高效的代碼,和代碼優(yōu)化方法