0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux下運行后臺任務(wù)的幾種方法

Linux大陸 ? 來源:51CTO ? 作者:zebra08 ? 2022-12-05 11:13 ? 次閱讀

1.問題的引入

程序員最不能容忍的是在使用終端的時候往往因為網(wǎng)絡(luò),關(guān)閉屏幕,執(zhí)行CTRL+C等原因造成ssh斷開造成正在運行程序退出,使得我們的工作功虧一簣。

其背后的主要原因在于上述的相關(guān)操作,shell默認會發(fā)送中斷信號給該終端session關(guān)聯(lián)的進程,從而導(dǎo)致進程跟隨終端退出,為了弄清這個問題我們首先要了解兩種中斷信號:

1)sigint:signal interrupt,ctrl+c會發(fā)送此信號,主動關(guān)閉程序

2)sighup: signal hang up,關(guān)閉終端,網(wǎng)絡(luò)斷線,關(guān)閉屏幕會發(fā)送此掛斷信號。

今天就給大家介紹linux中幾種后臺任務(wù)的執(zhí)行方法避免上述問題。

2 & 符號

這是一種把 &放在執(zhí)行命令最后,使啟動的程序忽略sigint信號,此時執(zhí)行ctrl+c關(guān)閉就不會關(guān)閉此進程,但是當屏幕關(guān)閉,斷網(wǎng)仍然會造成進程退出。

sh test.sh &

3.nohup指令

nohup(no hang up),意思就是不掛斷運行,用nohup運行命令可以使命令永久執(zhí)行下去,和用戶終端沒有關(guān)系,斷開SSH不影響運行,nohup捕獲了SIGHUP,并做了忽略處理,因此當屏幕關(guān)閉,斷網(wǎng)等造成ssh中斷時進程不會退出。但是ctrl+c可以關(guān)閉關(guān)閉該進程。因此大多數(shù)情況同時使用nohup和&啟動的程序,ctrl+c和關(guān)閉終端都無法關(guān)閉。在缺省情況下所有輸出都被重定向到一個名為nohup.out的文件中。

nohup指令基本使用格式:

nohup Command [ Arg ... ] [& ]

舉例

后臺不中斷執(zhí)行./test.sh,stdout輸出給out.log,stderr輸出給err.log

nohup ./test.sh > out.log 2>err.log  &

相關(guān)的數(shù)字含義如下:

0 – stdin (standard input),

1 – stdout (standard output),顯然 nohup command > out.log 等價于 nohup command 1> out.log,是缺省行為。

2 – stderr (standard error)

可能你也會見到這種寫法,其含義是把stderr也重定向給stdin

nohup ./test.sh > out.log 2>&1  &

4.ctrl + z、jobs、fg、bg

如果我們程序在啟動的時候并沒有使用&,nohup怎么辦呢,難道我們需要先執(zhí)行ctrl + c將在前臺執(zhí)行的進程終止執(zhí)行再重新啟動嗎,顯然有好的方法!

4.1 ctrl + z

將一個正在前臺執(zhí)行的作業(yè)進程放到后臺,并且暫停,用術(shù)語講就是掛起,執(zhí)行后如下:

[1]+ Stopped ./test.sh

4.2 jobs

查看當前有多少在后臺運行的命令,[jobnumber] 就是作業(yè)號。

jobs
[1]+ Stopped ./test.sh 
[2]+ Running ./test2.sh &

4.4 bg

將后臺中暫停(掛起)的作業(yè)進程繼續(xù)運行,例如把1號作業(yè)(./test.sh) 放到后臺運行,注意看已經(jīng)帶了&

bg 1
[1]+ ./test.sh  &

4.3fg

將后臺中的作業(yè)進程調(diào)至前臺繼續(xù)運行,例如把2號作業(yè)(./test2.sh &)調(diào)至前臺運行

fg 2 
./test2.sh

5.screen命令

5.1 介紹

如果說上面的方法是通過linux 相關(guān)本身命令實現(xiàn)了前后臺任務(wù)調(diào)度,那么screen就提供了另外一種思路。

不說人話的版本:GNU Screen是一款由GNU計劃開發(fā)的用于命令行終端切換的自由軟件。用戶可以通過該軟件同時連接多個本地或遠程的命令行會話,并在其間自由切換。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了統(tǒng)一的管理多個會話的界面和相應(yīng)的功能。

說人話的版本: 我們可以粗略地認為screen是一個虛擬終端軟件,直接在linux系統(tǒng)里面啟動了另外一個后臺程序接管(維持)了你的終端會話,當你直接連接的終端ssh斷開時他仍然讓程序認為你的ssh持續(xù)鏈接著,這樣也就不會出現(xiàn)進程接收到中斷信號而退出。

5.2 安裝

yum install screen

5.3使用

1)新建會話

screen -S yourname -> 新建一個叫yourname的session

2) 列出當前所有的session

screen -ls

3)恢復(fù)會話(回到y(tǒng)ourname這個session)

screen -r yourname

4) detach某個session

screen -d yourname -> 遠程detach某個session screen -d -r yourname -> 結(jié)束當前session并回到y(tǒng)ourname這個session

5)刪除會話

screen -S pid-X quit


審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11171

    瀏覽量

    208474
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    669

    瀏覽量

    21956
  • 進程
    +關(guān)注

    關(guān)注

    0

    文章

    200

    瀏覽量

    13933

原文標題:Linux下運行后臺任務(wù)的幾種方法

文章出處:【微信號:Linux大陸,微信公眾號:Linux大陸】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    查看Linux系統(tǒng)內(nèi)存使用情況的幾種方法

    Linux系統(tǒng)中,內(nèi)存監(jiān)控是優(yōu)化系統(tǒng)性能的關(guān)鍵。本文為你介紹12種方法,幫助你全面掌握Linux系統(tǒng)的內(nèi)存使用情況。這些方法包括查看/proc/meminfo、使用atop、free
    的頭像 發(fā)表于 11-13 09:30 ?1.2w次閱讀
    查看<b class='flag-5'>Linux</b>系統(tǒng)內(nèi)存使用情況的<b class='flag-5'>幾種方法</b>

    labview后臺任務(wù)的例程

    哪位高手有l(wèi)abview后臺任務(wù)的例程????
    發(fā)表于 11-07 19:51

    幾種Linux后臺啟動jar包的方法介紹

    ,但是窗口被鎖定,當我們關(guān)閉窗口或Ctrl + C打斷程序運行時,程序就會退出,這肯定不是我們想要的,下面我介紹幾種Linux后臺啟動ja
    發(fā)表于 07-22 08:02

    怎樣通過定時器去控制后臺任務(wù)

    通過定時器控制后臺任務(wù),每5ms執(zhí)行切換一個任務(wù),根據(jù)事件類型可以區(qū)分不同類型的任務(wù),對于外界按鍵類的操作響應(yīng),只有當前任務(wù)會做出響應(yīng),除當前任務(wù)
    發(fā)表于 01-07 07:27

    HarmonyOS后臺任務(wù)管理開發(fā)指南上線!

    為應(yīng)用進程分配 CPU 資源,同時對應(yīng)的公共事件等不再發(fā)給應(yīng)用進程)和進程終止。 為了保障后臺音樂播放、日歷提醒等功能的正常使用,系統(tǒng)提供了規(guī)范內(nèi)受約束的后臺任務(wù),擴展應(yīng)用在后臺運行
    發(fā)表于 11-29 09:58

    Linux 后臺運行程序

    。jobsjos?命令用于顯示 Linux 中的任務(wù)列表及任務(wù)狀態(tài),包括后臺運行任務(wù)。該命令可
    發(fā)表于 04-02 14:41 ?756次閱讀

    LabVIEW教程之后臺任務(wù)的詳細資料說明

    有一些任務(wù)運行的時候,并不需要與用戶交互。它們通常在不打擾用戶其它工作的時候默默的執(zhí)行。這樣的任務(wù)后臺任務(wù)。與之對比,前臺任務(wù)就是用戶看
    發(fā)表于 05-07 16:42 ?5次下載
    LabVIEW教程之<b class='flag-5'>后臺任務(wù)</b>的詳細資料說明

    linux的程序如何運行

     運行linux程序有三種方法
    發(fā)表于 05-17 09:40 ?3460次閱讀
    <b class='flag-5'>linux</b>的程序如何<b class='flag-5'>運行</b>

    干貨:計算fibnacci 級數(shù)的幾種方法

    干貨:計算fibnacci 級數(shù)的幾種方法
    的頭像 發(fā)表于 06-22 11:23 ?2366次閱讀
    干貨:計算fibnacci 級數(shù)的<b class='flag-5'>幾種方法</b>

    虛擬機:Linux查看路由信息的幾種方法

    虛擬機:Linux查看路由信息的幾種方法
    的頭像 發(fā)表于 06-22 15:24 ?8190次閱讀
    虛擬機:<b class='flag-5'>Linux</b>查看路由信息的<b class='flag-5'>幾種方法</b>

    總結(jié)一OpenCV遍歷圖像的幾種方法

    在圖形處理中,遍歷每個像素點是最基本的功能,是做算法的基礎(chǔ),這篇文章來總結(jié)一OpenCV遍歷圖像的幾種方法。
    的頭像 發(fā)表于 01-18 15:08 ?1637次閱讀

    AN021 測量MCU代碼運行時間的幾種方法

    AN021 測量MCU代碼運行時間的幾種方法
    發(fā)表于 02-27 18:23 ?0次下載
    AN021 測量MCU代碼<b class='flag-5'>運行</b>時間的<b class='flag-5'>幾種方法</b>

    Linux幾種后臺任務(wù)的執(zhí)行方法

    今天給大家介紹Linux幾種后臺任務(wù)的執(zhí)行方法。 ? 1.問題的引入 程序員最不能容忍的是在使用終端的時候往往因為網(wǎng)絡(luò),關(guān)閉屏幕,執(zhí)行CTRL+C等原因造成ssh斷開造成正在
    的頭像 發(fā)表于 06-17 15:57 ?711次閱讀

    HarmonyOS后臺任務(wù)管理開發(fā)指南上線!

    為什么要使用后臺任務(wù)?開發(fā)過程中如何選擇合適的后臺任務(wù)?后臺任務(wù)申請時存在哪些約束與限制? 針對開發(fā)者使用后臺任務(wù)中的疑問,我們 上線了概念更明確、邏輯結(jié)構(gòu)更清晰的
    的頭像 發(fā)表于 11-28 21:10 ?677次閱讀
    HarmonyOS<b class='flag-5'>后臺任務(wù)</b>管理開發(fā)指南上線!

    怎么在CentOS中后臺運行、關(guān)閉和查看后臺任務(wù)?

    怎么在CentOS中后臺運行、關(guān)閉和查看后臺任務(wù)?
    的頭像 發(fā)表于 12-18 17:34 ?2736次閱讀