衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

Linux中幾種后臺任務的執行方法

dyquk4xk2p3d ? 來源:良許Linux ? 2023-06-17 15:57 ? 次閱讀

今天給大家介紹Linux中幾種后臺任務的執行方法。

1.問題的引入

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

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

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

2)sighup: signal hang up,關閉終端,網絡斷線,關閉屏幕會發送此掛斷信號。

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

2 & 符號

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

shtest.sh&

3.nohup指令

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

nohup指令基本使用格式:

nohupCommand[Arg...][&]

舉例

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

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

相關的數字含義如下:

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.log2>&1&

4.ctrl + z、jobs、fg、bg

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

4.1 ctrl + z

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

[1]+Stopped./test.sh

4.2 jobs

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

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

4.3 bg

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

bg1

[1]+./test.sh&

4.4 fg

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

fg2

./test2.sh

5.screen命令

5.1 介紹

如果說上面的方法是通過linux 相關本身命令實現了前后臺任務調度,那么screen就提供了另外一種思路。

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

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

5.2 安裝

yuminstallscreen

5.3 使用

1)新建會話

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

2) 列出當前所有的session

screen-ls

3)恢復會話(回到yourname這個session)

screen-ryourname

4) detach某個session

screen-dyourname->遠程detach某個session
screen-d-ryourname->結束當前session并回到yourname這個session

5)刪除會話

screen-Spid-Xquit


責任編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210415
  • 終端
    +關注

    關注

    1

    文章

    1156

    瀏覽量

    30006
  • 程序
    +關注

    關注

    117

    文章

    3796

    瀏覽量

    81419

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

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    鴻蒙原生應用/元服務開發-延遲任務說明(一)

    WorkSchedulerExtensionAbility限制以下接口的調用: @ohos.resourceschedule.backgroundTaskManager (后臺任務管理
    發表于 01-16 14:57

    labview后臺任務的例程

    哪位高手有labview后臺任務的例程????
    發表于 11-07 19:51

    linux的程序后臺執行

    1. 執行命令后加 & 符號,缺點客戶端關了,也會停止執行 后臺執行:php cli.phpadmin/index& 顯示到前臺用命令:fg
    發表于 07-15 06:34

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

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

    怎樣通過定時器去控制后臺任務

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

    LabVIEW可執行文件作為后臺進程運行

    其作為后臺任務運行。如何隱藏可執行的前面板窗口并刪除運行應用程序時顯示的任何任務欄圖標?要在運行可執行文件時隱藏應用程序的前面板窗口并刪除任何任務
    發表于 03-18 21:15

    HarmonyOS后臺任務管理開發指南上線!

    為什么要使用后臺任務?開發過程如何選擇合適的后臺任務后臺任務申請時存在哪些約束與限制? 針對開發者使用后臺任務
    發表于 11-29 09:58

    如何在Linux中使用 WSL 執行任務

    在本教程,你將看到如何使用 WSL 執行除了管理之外的任務 —— 例如掛載 USB 驅動器和操作文件。你需要運行一個完全更新的 Windows 10 并選擇一個 Linux 發行版。
    發表于 04-30 10:31 ?2029次閱讀

    介紹兩種方法來避免正在執行任務中斷

    有時我們也許會有這樣的需求:要執行一個命令或者腳本,但是需要幾個小時甚至幾天。這就要考慮一個問題,就是中途斷網或出現其他意外情況,執行任務中斷了怎么辦?你可以把命令或者腳本丟到后臺
    的頭像 發表于 02-09 08:56 ?6295次閱讀
    介紹兩種<b class='flag-5'>方法</b>來避免正在<b class='flag-5'>執行</b><b class='flag-5'>中</b>的<b class='flag-5'>任務</b>中斷

    Linux 后臺運行程序

    ?在 Linux 系統的終端工作時,有時需要將當前任務暫停調至后臺,或有時須將后臺暫停的
    發表于 04-02 14:41 ?811次閱讀

    LabVIEW教程之后臺任務的詳細資料說明

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

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

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

    Linux下運行后臺任務幾種方法

    程序員最不能容忍的是在使用終端的時候往往因為網絡,關閉屏幕,執行CTRL+C等原因造成ssh斷開造成正在運行程序退出,使得我們的工作功虧一簣。
    的頭像 發表于 12-05 11:13 ?898次閱讀

    HarmonyOS后臺任務管理開發指南上線!

    為什么要使用后臺任務?開發過程如何選擇合適的后臺任務后臺任務申請時存在哪些約束與限制? 針對開發者使用后臺任務
    的頭像 發表于 11-28 21:10 ?821次閱讀
    HarmonyOS<b class='flag-5'>后臺任務</b>管理開發指南上線!

    怎么在CentOS后臺運行、關閉和查看后臺任務

    怎么在CentOS后臺運行、關閉和查看后臺任務
    的頭像 發表于 12-18 17:34 ?4050次閱讀
    乐宝百家乐的玩法技巧和规则| 菲彩百家乐的玩法技巧和规则 | 百家乐网上真钱娱乐网| 百家乐官网水浒传| 一二博国际| 天博百家乐的玩法技巧和规则 | 百家乐官网网站建设| 大发888我的爱好| 乐百家乐彩现金开户| 百家乐官网论坛博彩啦| 老虎机 | 国际娱百家乐的玩法技巧和规则| 免费百家乐官网统计软件| 澳门百家乐官网职业| 网络博彩| 大发888官网 df888| 百家乐里靴是什么意识| 百家乐娱乐城送分| 百樂坊百家乐官网的玩法技巧和规则| 澳门百家乐官网是骗人的| 一搏娱乐| 大发888婚庆车队| 百家乐园云鼎赌场娱乐网规则| 百家乐可以算牌么| 24鸡是什么命| 什么叫百家乐官网的玩法技巧和规则 | 百家乐赌场策略论坛| 24山玄空飞星排盘图| 包赢百家乐官网的玩法技巧和规则 | 优博娱乐场| bet365备用器| 888娱乐城返水| 鹤乡棋牌乐| 大发888娱乐城客服lm0| 威尼斯人娱乐城官网lm0| 百家乐发牌规| 太阳城大酒店| 老虎机游戏在线玩| 大发888亚洲城| 顶级赌场官网| 德州扑克技巧|