Linux中作业控制命令
開門見山,最近.NET勸退師要在linux上寫些長時間運(yùn)行的腳本,獲取Azure BlobStorage存儲的數(shù)據(jù)。
記錄一下Linux中后臺執(zhí)行作業(yè)的命令。
Linux作業(yè)
作業(yè)(Job)是shell管理的進(jìn)程(每個job都有一個關(guān)聯(lián)的PID),每個作業(yè)會被分配一個線性job ID。
有兩種形式的作業(yè):
Foreground: 當(dāng)你在終端窗口輸入命令,這個命令將會占據(jù)終端窗口,直到命令執(zhí)行完成, 這是一個前臺Job
Background: 當(dāng)你在命令后面添加& 符號,命令將不會占據(jù)終端窗口(你可在shell prompt繼續(xù)輸入),這是一個后臺Job
Linux作業(yè)控制命令
使用作業(yè)控制命令,您可以在Shell中運(yùn)行和管理多個作業(yè)。但是你只能在啟動作業(yè)的Shell中使用作業(yè)控制命令。
| jobs | 列出所有的Job, 后面可接參數(shù)進(jìn)行過濾 |
| bg %n | 將當(dāng)前/指定Job放置到后臺運(yùn)行 |
| fg %n | 將當(dāng)前/指定Job帶到前臺運(yùn)行 |
另外還有一些與作業(yè)有關(guān)的快速操作:
& :讓命令或者腳本在后臺運(yùn)行
Ctrl+Z:中斷前臺作業(yè),并放置在后臺
Ctrl+C:終止當(dāng)前前臺作業(yè)
nohup:即使關(guān)閉終端也會執(zhí)行(一般搭配上面的&)
在后臺運(yùn)行作業(yè)
在原命令的最后加上 &,可讓這個作業(yè)在后臺運(yùn)行。下面的例子:在后臺執(zhí)行sleep命令
$?sleep?100?&? [1]?14488shell返回結(jié)果:中括號內(nèi)是job ID, 后面是PID;之后使用jobs命令查看狀態(tài):100s之后這個后臺作業(yè)執(zhí)行完成
[root@recv-data?recv]#?jobs [1]+??Running?????????????????sleep?100?& .... [root@recv-data?recv]#?jobs [1]+??Done????????????????????sleep?100管理作業(yè)
對于前臺作業(yè),
執(zhí)行Ctrl+Z可以將前臺作業(yè)中止,并放置在后臺;之后可以使用bg %n命令讓中止的后臺作業(yè)跑起來。
處于后臺的作業(yè),fg %n切換回前臺執(zhí)行。
#?下面顯示一個正在運(yùn)行的后臺作業(yè) $?jobs [1]+??Running?????????????????sleep?100?&#?切換回前臺運(yùn)行 $?fg?%1 sleep?100“眾所周知, Ctrl+C終止當(dāng)前前臺作業(yè),不多說。
nohup:關(guān)閉終端也執(zhí)行
“很多時候,你是通過ssh登錄到遠(yuǎn)程服務(wù)器,再執(zhí)行Shell腳本或命令,如果你退出了終端(終止遠(yuǎn)程連接),則該進(jìn)程/命令將被殺死。如果不確定該作業(yè)何時完成,則最好讓該作業(yè)在后臺運(yùn)行,但是,如果你退出系統(tǒng),該作業(yè)將被Shell停止并終止,當(dāng)進(jìn)程收到SIGHUP時,如何使作業(yè)在后臺運(yùn)行?
這個時候,我們就要使用nohup命令,讓我們長時間運(yùn)行的Shell腳本或命令在我們退出系統(tǒng)依舊能執(zhí)行(此時一般搭配&后臺執(zhí)行)。
“顧名思義:nohup是用于忽略HUP(掛斷)信號的POSIX命令。
總結(jié):
只能在初始化作業(yè)的shell里管控作業(yè)
fg %n bg %n 切換前后臺作業(yè)
nohup & 搭配,幫助長時間后臺運(yùn)行的作業(yè),在你退出系統(tǒng),依舊可運(yùn)行
前后端分離,如何在前端項目中動態(tài)插入后端API基地址?(in docker)
ASP.NET Core跨平臺技術(shù)內(nèi)幕
AspNetCore結(jié)合Redis實(shí)踐消息隊列
Quartz.net在集群環(huán)境下部署任務(wù)的姿勢
基于docker-compose的Gitlab CI/CD實(shí)踐&排坑指南
總結(jié)
以上是生活随笔為你收集整理的Linux中作业控制命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决 Azure AD 在 Azure
- 下一篇: 《Unit Testing》2.1 经典