開門見山,最近.net勸退師要在linux上寫些長時間執行的指令碼,獲取azure blobstorage儲存的資料。
記錄一下linux中後台執行作業的命令。
作業(job)是shell管理的程序(每個job都有乙個關聯的pid),每個作業會被分配乙個線性job id。
有兩種形式的作業:
foreground: 當你在終端視窗輸入命令,這個命令將會佔據終端視窗,直到命令執行完成, 這是乙個前台job
background: 當你在命令後面新增& 符號,命令將不會佔據終端視窗(你可在shell prompt繼續輸入),這是乙個後台job
使用作業控制命令,您可以在shell中執行和管理多個作業。但是你只能在啟動作業的shell中使用作業控制命令。
命令描述
jobs
列出所有的job, 後面可接引數進行過濾
bg %n
將當前/指定job放置到後台執行
fg %n
將當前/指定job帶到前台執行
另外還有一些與作業有關的快速操作:
& :讓命令或者指令碼在後台執行
ctrl+z:中斷前台作業,並放置在後台
ctrl+c:終止當前前台作業
nohup:即使關閉終端也會執行(一般搭配上面的&)
在原命令的最後加上&,可讓這個作業在後台執行。下面的例子:在後台執行sleep命令
$ sleep 100 &
[1] 14488
shell返回結果:中括號內是job id, 後面是pid;之後使用jobs命令檢視狀態:100s之後這個後台作業執行完成
[root@recv-data recv]# jobs
[1]+ running sleep 100 &
....
[root@recv-data recv]# jobs
[1]+ done sleep 100
對於前台作業,
執行ctrl+z
可以將前台作業中止,並放置在後台;之後可以使用bg %n
命令讓中止的後台作業跑起來。
# 將前台作業中止,並放置到後台
$ sleep 100
^z[1]+ stopped sleep 100
$ jobs
[1]+ stopped sleep 100
# bg命令讓後台中止的作業跑起來
$ bg % 1
[1]+ sleep 100 &
處於後台的作業,fg %n
切換回前台執行。
# 下面顯示乙個正在執行的後台作業
$ jobs
[1]+ running sleep 100 &
# 切換回前台執行
$ fg %1
sleep 100
「nohup:關閉終端也執行眾所周知, ctrl+c終止當前前台作業,不多說。
「這個時候,我們就要使用很多時候,你是通過ssh登入到遠端伺服器,再執行shell指令碼或命令,如果你退出了終端(終止遠端連線),則該程序/命令將被殺死。如果不確定該作業何時完成,則最好讓該作業在後台執行,但是,如果你退出系統,該作業將被shell停止並終止,當程序收到sighup時,如何使作業在後台執行?
nohup
命令,讓我們長時間執行的shell指令碼或命令在我們退出系統依舊能執行(此時一般搭配&
後台執行)。
「閱讀更多顧名思義:nohup是用於忽略hup(結束通話)訊號的posix命令。
Linux中作業控制命令
開門見山,最近.net勸退師要在linux上寫些長時間執行的指令碼,獲取azure blobstorage儲存的資料。記錄一下linux中後台執行作業的命令。作業 job 是shell管理的程序 每個job都有乙個關聯的pid 每個作業會被分配乙個線性job id。有兩種形式的作業 foregrou...
Linux 作業控制
參考文獻 作業控制是bsd在1980年前後增加的乙個特性。它允許在乙個終端上啟動多個作業 程序組 它支援控制哪乙個作業可以訪問終端,以及哪些作業可以在後台執行。作業可以看做是shell管理的程序 主要有三點 支援作業控制的shell 核心中的終端驅動程式必須支援作業控制 核心必須提供對某些作業控制訊...
Linux作業控制
在linux中,利用shell的作業控制是比較常用的操作,在這一節中我們將 作業控制相關的操作。為了方便我們檢視區分不同的進行,我們編寫如下程式,其功能是每間隔2秒輸出一次自己的編號。1 2 test puting a running program into backgound3 4 includ...