已知此進(jìn)程需要后臺(tái)運(yùn)行,且此進(jìn)程還未運(yùn)行
1.nohup命令:
顧名思義咙冗,nohup的用途就是讓提交的命令忽略所有的hangup信號(hào)孵滞。
使用方法:nohup COMMAND [ARG]...
2.setsid命令:
在一個(gè)新的會(huì)話中運(yùn)行命令中捆,從而可以避開(kāi)當(dāng)前終端發(fā)出的HUP信號(hào)。
使用方法:setsid COMMAND [ARG]...
3.&:
可以結(jié)合()產(chǎn)生一個(gè)新的子shell并在這個(gè)子shell中將任務(wù)放置到后臺(tái)運(yùn)行坊饶,從而不受當(dāng)前shell終端的HUP信號(hào)影響泄伪。
使用方法:(COMMAND [ARG]... &)
而我通常的使用方式為:
nohup ./filename.sh > filename.log 2>&1 &
nohup ./filename.sh &> filename.log &
三點(diǎn)理由:
1)nohup保障進(jìn)程不會(huì)被hangup信號(hào)異常中斷;
2)將任務(wù)放置到后臺(tái)運(yùn)行匿级,不占用當(dāng)前的終端蟋滴;
3)將錯(cuò)誤輸出也打印到log中染厅,默認(rèn)>只有標(biāo)準(zhǔn)輸出,錯(cuò)誤輸出沒(méi)有津函。
4.通過(guò)screen等命令:
screen是建立一個(gè)新的全屏虛擬會(huì)話終端肖粮,這個(gè)會(huì)話只有在手動(dòng)輸入exit的時(shí)候才會(huì)退出,在這個(gè)會(huì)話里執(zhí)行的命令不用擔(dān)心HUP信號(hào)會(huì)對(duì)我們的進(jìn)程造成影響尔苦,因此也不用給每個(gè)命令前都加上“nohup”或“setsid”了涩馆,非常適合我們有規(guī)劃的執(zhí)行大量的后臺(tái)任務(wù),可以非常方便的讓我們對(duì)這些后臺(tái)任務(wù)進(jìn)行管理蕉堰。
使用方法:
screen //立即創(chuàng)建并進(jìn)入一個(gè)會(huì)話凌净。
screen -dmS {name} //建立一個(gè)處于掛起模式下的會(huì)話,并根據(jù)我們的需要指定其會(huì)話名稱屋讶。
screen -dmS {name} {script} //在建立會(huì)話時(shí)同時(shí)執(zhí)行指定的命令或腳本
screen -list //列出所有會(huì)話冰寻。
screen -r {name} //以獨(dú)占方式進(jìn)入指定會(huì)話。
screen -x {name} //以并行方式進(jìn)入指定會(huì)話皿渗。
ctrl +ad //輸入快捷鍵ctrl +a和d斩芭,可暫時(shí)退出當(dāng)前會(huì)話。
exit //進(jìn)入指定會(huì)話后執(zhí)行exit即可關(guān)閉該會(huì)話乐疆。
針對(duì)已經(jīng)運(yùn)行的進(jìn)程划乖,需要放置到后臺(tái)運(yùn)行
1.通過(guò)ctrl+z,bg,fg,disown
通過(guò)以下命令,我們可以對(duì)放入到后臺(tái)的命令進(jìn)行控制
查看當(dāng)前終端下的后臺(tái)進(jìn)程:
直接執(zhí)行:jobs
將查看到的某個(gè)后臺(tái)進(jìn)程放回到前臺(tái):
直接輸入:fg {jobid} //這里的{jobid}是通過(guò)jobs命令中看到的進(jìn)程前[]中的數(shù)字挤土。
將當(dāng)前正在前臺(tái)運(yùn)行的進(jìn)程放到后臺(tái)運(yùn)行:
先敲下快捷鍵:ctrl +z //暫停當(dāng)前正在運(yùn)行的進(jìn)程琴庵。
再執(zhí)行:bg
終止當(dāng)前正在前臺(tái)運(yùn)行的進(jìn)程:
直接敲下快捷鍵:ctrl +c
disown
亡羊補(bǔ)牢,為沒(méi)有使用nohup與setsid的進(jìn)程加上忽略HUP信號(hào)的功能仰美。
使用方法:
將當(dāng)前正在前臺(tái)運(yùn)行的進(jìn)程放到后臺(tái)運(yùn)行;
然后執(zhí)行disown -h %{jobid} //這里的{jobid}是通過(guò)jobs命令中看到的進(jìn)程前[]中的數(shù)字迷殿。
2.reptyr命令+screen命令配合使用:
reptyr需要單獨(dú)安裝,
ubuntu(apt-get install reptyr)
作用:
把沒(méi)有辦法把后臺(tái)的進(jìn)程帶到當(dāng)前的pty里來(lái)而不終止任務(wù)
這樣我們可以結(jié)合screen等將當(dāng)前正在運(yùn)行的任務(wù)放到后臺(tái)而不終止
使用:
screen -S {name} #新建一個(gè)screen進(jìn)程
ps -ef|grep now_run_proc #獲取當(dāng)前運(yùn)行進(jìn)程的PID
reptyr {pid} #將當(dāng)前運(yùn)行的進(jìn)程切換到screen下運(yùn)行
ctrl+a+d #退出screen
此時(shí)進(jìn)程已經(jīng)放到后臺(tái)執(zhí)行咖杂,回家喝茶等結(jié)果庆寺。。