Linux中作業控制命令

2021-10-07 16:40:35 字數 2028 閱讀 2463

開門見山,最近.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

眾所周知, ctrl+c終止當前前台作業,不多說。

nohup:關閉終端也執行

很多時候,你是通過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...