背景
我們經(jīng)常需要服務(wù)器上面執(zhí)行一些耗時(shí)操作咪橙,比如執(zhí)行scp命令下載大文件等褂微,但是又不想一直等待完成再做其他事情瓜饥,所以可以配合linux的相關(guān)命令達(dá)到目的。
具體步驟
1.執(zhí)行相關(guān)耗時(shí)操作命令
:/ scp -r xxx@ip:/mnt/xxx /localpath/xxx
2.按下ctrl+z
命令掛起執(zhí)行程序,暫停運(yùn)行
:/ ctrl+z
看到如下反饋:
序號(hào)(不是pid) 狀態(tài) 執(zhí)行的命令
------------------------------------------------------------------
[1]+ stopped scp -r xxx@ip:/mnt/xxx /localpath/xxx
3.可以利用jobs命令,查看當(dāng)前暫停的任務(wù)或在后臺(tái)運(yùn)行的任務(wù),反饋如下
:/ jobs
看到如下反饋:
序號(hào)(不是pid) 狀態(tài) 執(zhí)行的命令
------------------------------------------------------------------
[1]+ stopped scp -r xxx@ip:/mnt/xxx /localpath/xxx
4.利用bg %[job_id]
,將該掛起的執(zhí)行程序轉(zhuǎn)為后臺(tái)運(yùn)行
:/ bg %1
看到如下反饋:
序號(hào)(不是pid) 狀態(tài) 執(zhí)行的命令
------------------------------------------------------------------
[1]+ running scp -r xxx@ip:/mnt/xxx /localpath/xxx
5.如果想將該執(zhí)行程序轉(zhuǎn)到前臺(tái)來(lái)運(yùn)行,則執(zhí)行fg+%[job_id]
:/ fg %1
此時(shí)程序?qū)⑥D(zhuǎn)為前臺(tái)運(yùn)行
[重要]利用disown -h+%[job_id]
命令,忽略該作業(yè)的HUP
信號(hào)
通俗說(shuō)就是當(dāng)shell退出或斷開(kāi)后,后臺(tái)任務(wù)繼續(xù)不中斷執(zhí)行钱磅。該命令運(yùn)行在bg+%[序號(hào)]之后
該命令的詳細(xì)說(shuō)明,如下:
就是將指定作業(yè)序號(hào)的作業(yè)從作業(yè)列表中刪除梦裂,在shell退出的時(shí)候?qū)⑵渥鳛閕nit的子進(jìn)程繼續(xù)執(zhí)行。
實(shí)際的應(yīng)用中盖淡,比如我們?cè)谶\(yùn)行一條用時(shí)比較長(zhǎng)的命令的時(shí)候年柠,忽然臨時(shí)需要登出系統(tǒng)或者關(guān)閉shell,而在當(dāng)時(shí)運(yùn)行這個(gè)命令時(shí)沒(méi)有考慮到要提交為作業(yè)放到后臺(tái)運(yùn)行禁舷”肷迹可以如下操作:
1.可以先用Ctrl+z
來(lái)掛起當(dāng)前進(jìn)程毅往,使用jobs獲得作業(yè)號(hào).
2.利用bg %[job_id]
后臺(tái)繼續(xù)運(yùn)行該命令.
3.然后再使用disown -h %[job_id]
來(lái)切斷這個(gè)命令與當(dāng)前shell進(jìn)程的聯(lián)系.
4.這樣就可以避免shell關(guān)閉的時(shí)候會(huì)中斷命令的執(zhí)行.
# 切斷與當(dāng)前shell聯(lián)系
disown -h %1
# 此時(shí)退出命令運(yùn)行不會(huì)中斷
exit